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