我们将 Hibernate 3 与 WebSphere v6 和 DB2 一起使用。我们遇到了 Hibernate 发出的错误 SQL 准备语句并导致语法问题的奇怪问题。
Hibernate 发出的良好查询:
SELECT * FROM rocc.Transaction t WHERE t.status_cd = 0 和 t.application_cd = ? order by coalesce(t.priority,0) 仅获取前 25 行
Hibernate 有时会错误地发出相同的查询:
SELECT * FROM rocc.Transaction t WHERE t.status_cd = ? 和 t.application_cd = ? ORDER BY COALESCE (t.priority, ? ) FETCH first ? 仅行
它用问号替换值(零)并将关键字的字体更改为大写(没关系,但在这里提到)。它还用问号更改了 fetch 子句中的数字 25。
Hibernate 有时发出错误的准备好的语句是什么原因造成的?
Hibernate 正在调用 WSJdbcPreparedStament.executeQuery 方法。