“ 嵌套异常是 java.sql.SQLException: '?' 附近的语法不正确“

" nested exception is java.sql.SQLException: Incorrect syntax near '?' "

我正在尝试通过 Spring 框架的 JdbcTemplate 在我的 Java 应用程序中执行 SQL 语句。尽管查询在 Aqua Data Studio 中 100% 正常工作,但我收到 "bad SQL grammar" 错误。

这是我的 Java 代码:

String entity = GCEnvironmentClient.getGteProperties().getProperty("ENTITY_ID");

InputStream is = Thread.currentThread().getContextClassLoader()
            .getResourceAsStream("sql/blotter.sql");

    String query = IOUtils.toString(is).concat(entity);

    return this.jdbcTemplate.query(query, new BlotterTradeMapper());

需要注意的一件事:我尝试制作 RowMapper class (BlotterTradeMapper) return null 对象以避免操纵 ResultSet.这没有改变任何东西,所以我知道 class 不会导致问题。

这里是查询:

SELECT 
    inv..trans.com_line1,
    inv..trans.trade_acct,
    inv..trans.bs_code,
    inv..trans.trans_type,
    inv..trans.cust_num,
    mast..sec_mst.sec_type,
    mast..sec_mst.mature_date,
    mast..sec_mst.coupon,
    inv..trans.trans_num,
    inv..trans.trade_date,
    inv..trans.cc_code,
    inv..trans.settle_date,
    inv..trans.other_chrg,
    inv..trans.principal,
    inv..trans.interest,
    inv..trans.basis_prc,
    inv..trans.dollar_prc,
    inv..trans.quantity,
    inv..trans.cusip,
    inv..trans.rem_line1,
    inv..trans.rem_line2,
    mast..sec_mst.dated_date,
    mast..sec_mst.des_line1,
    mast..groupmst.group_name,
    mast..groupmst.group_id,
    mast..cust_mst.nam_add1,
    inv..trans.fin_rate,
    ISNULL(mast..contract.contract_size, 1),
    ISNULL(mast..contract.contract_size, 1),
    mast..curr_mst.multiplier,
    mast..sec_mst.sec_class
FROM 
    inv..trans,
    mast..sec_mst,
    mast..cust_mst,
    mast..groupmst,
    mast..curr_mst,
    mast..contract
WHERE 
    inv..trans.cust_num = mast..cust_mst.cust_num 
AND 
    inv..trans.group_id = mast..groupmst.group_id 
AND 
    inv..trans.cusip = mast..sec_mst.cusip 
AND 
    mast..sec_mst.currency_type = mast..curr_mst.currency_type
AND 
    mast..sec_mst.contract_code *= mast..contract.contract_code
AND
    inv..trans.entity_id = 1

这里是错误:

org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [query]; nested exception is java.sql.SQLException: Incorrect syntax near '?'. at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:237)

注意查询中没有问号!有人以前见过这样的东西吗?

我在 .sql 文件的顶部发现了一些隐藏字符。这些必须是由 Aqua Data Studio 创建的。甚至 Notepad++ 都没有捡起它们 - 只有 Eclipse 文本编辑器做到了。