1
我正在從Oracle向SQL Server遷移Hibernate上的某個項目(我不確定它是嵌入到JBoss5.1.0GA中的版本,看起來像3.x)。SQL謂詞上的SQL Server + hibernate組合鍵失敗
一個查詢的HQL的樣子:
...
FROM k join k.defs kd
...
WHERE ...
kd not in (SELECT d.defs FROM d ...)
在MSSQL此查詢執行(和失敗)爲:
....
WHERE
(
(kd.ITEM_ID, kd.DEF_ID) not in (
SELECT
defs.ITEM_ID, defs.DEF_ID
我實體有2場ITEM_ID和DEF_ID複合鍵。 SQL Server失敗是因爲與Oracle相比不支持複合IN
謂詞。
很明顯,這是Hibernate產生的映射中的一個錯誤。我的問題是:如何配置/修補Hibernate以提供入伍樣本的逐場比較?
感謝您關注我的問題。 「NOT EXISTS」是替代'NOT IN'謂詞的更優雅的方式。但是我將把它作爲最後的解決方案 - 因爲代碼是遺留的,更改會導致副作用。所以在使用hibernate進行操作時出現問題 - 要進行修補(可能需要更高的版本或更改特定的類)。 – Dewfy 2011-12-22 07:47:24