我正在尝试通过JdbcTemplate
Spring Framework在Java应用程序中执行SQL语句。"bad SQL grammar"
尽管查询在Aqua Data Studio中工作100%正常,但我仍然收到错误消息。
这是我的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
)返回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)
请注意,查询中没有问号!有人看过类似的东西吗?
我在.sql文件的顶部发现了一些隐藏的字符。这些必须由Aqua Data Studio创建。甚至Notepad ++都没有选择它们-只有Eclipse文本编辑器选择了它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句