1
Hibernateでプロジェクトを移行しています(JBoss5.1.0GAに埋め込まれているバージョンが3.xのように見えません)。IN述部でSQL Server + hibernateコンポジットキーが失敗する
HQLのクエリの一つは次のようになります。MSSQLで
...
FROM k join k.defs kd
...
WHERE ...
kd not in (SELECT d.defs FROM d ...)
このクエリが実行され(失敗した)のように:私のエンティティは、2つのフィールドITEM_IDとDEF_IDの化合物の鍵を持っている
....
WHERE
(
(kd.ITEM_ID, kd.DEF_ID) not in (
SELECT
defs.ITEM_ID, defs.DEF_ID
。 Oracleと比較して、複合語IN
述語はサポートされていないため、SQL Serverは失敗します。
明らかに、これはHibernateによって生成されたマッピングのバグです。私の質問は:登録サンプルのフィールドごとの比較を提供するためにHibernateを構成/パッチする方法は?
私の質問にご注意いただきありがとうございます。 'NOT EXISTS'は' NOT IN'述語を置き換えるよりエレガントな方法です。しかし、私は最後の解決策として残すつもりです。コードは従来のものであり、変更は副作用を引き起こす可能性があるからです。だから、ハイバネーションを使って操作することには疑問があります - パッチを当てる(いくつかの上位バージョンや特定のクラスを変更するかもしれません)。 – Dewfy