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

时间:2015-08-05 15:45:39

标签: java sql spring jdbc sybase

我正在尝试通过Spring Framework的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类(BlotterTradeMapper)返回null个对象,以避免操纵ResultSet。这并没有改变任何东西,所以我知道这个课程没有引起问题。

以下是查询:

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)

请注意,查询中没有问号!有没有人见过这样的东西?

1 个答案:

答案 0 :(得分:0)

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