1

WebSphere v6 および DB2 で Hibernate 3 を使用しています。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 = ? AND t.application_cd = ? ORDER BY COALESCE (t.priority, ? )最初 にFETCH ? 行のみ

値(ゼロ)を疑問符に置き換え、キーワードのフォントを大文字に変更しています(関係ありませんが、ここで言及しています)。また、fetch 句の数字 25 が疑問符付きで変更されました。

Hibernate によって時々発行される間違った準備済みステートメントの原因は何ですか?

Hibernate は WSJdbcPreparedStament.executeQuery メソッドを呼び出しています。

4

1 に答える 1

1

これは、JDBC での PreparedStatement の通常の動作であり、クエリのパラメータを ? に置き換えます。これは、データベースがクエリに対して最適化されたアクセス プランを構築するのにも役立ちます。Hibernate はこれを自動化しています。

Jdbc リファレンス、または休止状態になる前に使用していた方法。

于 2012-08-01T20:39:16.233 に答える