3

我有一个本机 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,它将执行得很好。但是,当我尝试通过休眠来执行此操作时,它会抛出“syntaxErrorException”。有任何想法吗?谢谢

4

1 回答 1

6

问题是由查询末尾的分号引起的。您使用的 PostgreSQL SQL 工具需要它,因为它允许分隔多个查询,但要通过 Java 语句执行单个查询,分号不能在那里。

于 2013-10-02T13:27:22.217 回答