我有一个本机SQL查询,我希望通过hibernate运行,但会抛出错误:
org.hibernate.exception.SQLGrammarException:
could not execute native bulk manipulation query
Caused by:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: An unexpected token ""
was found following "". Expected tokens may include: "NQ_EXE_ID = 12345"
我运行以执行更新的代码是:
SQLQuery updateQuery = getSession().createSQLQuery(updateSql);
System.out.println(updateQuery.getQueryString());
updateQuery.executeUpdate();
在调试期间我可以在SQLQuery对象里面看到并且sql是:(在db2中运行正常)
UPDATE some_table SET DEST_FLDR = 'some_value' ,
LST_CHG_TMS = CURRENT TIMESTAMP
WHERE SUB_RUN_ID = 111111
AND INQ_EXE_ID = 12345 ;
如果我手动运行上面代码生成的sql,它将执行正常。但是,当我尝试通过hibernate执行它时会抛出'syntaxErrorException'。有任何想法吗?感谢
答案 0 :(得分:5)
问题是由查询末尾的分号引起的。您使用的PostgreSQL SQL工具需要它,因为它允许分离多个查询,但是通过Java语句执行单个查询,分号不能存在。