hibernate throw:在“”之后发现了一个意外的令牌“”

时间:2013-10-02 12:22:30

标签: hibernate db2 native-sql

我有一个本机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'。有任何想法吗?感谢

1 个答案:

答案 0 :(得分:5)

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