/ / SQL Server + la clave compuesta de hibernación falla en el predicado IN - servidor SQL, hibernación, clave compuesta

La clave compuesta de SQL Server + hibernate falla en el predicado IN - servidor SQL, hibernación, clave compuesta

Estoy migrando algún proyecto en Hibernate (no estoy seguro acerca de la versión que está incrustada en JBoss5.1.0GA parece 3.x) de Oracle a SQL Server.

Una de las consultas en HQL se parece a:

...
FROM k join k.defs kd
...
WHERE ...
kd not in ( SELECT d.defs FROM d ...)

En MSSQL esta consulta se ejecutó (y falló) como:

....
WHERE
(
(kd.ITEM_ID, kd.DEF_ID) not in  (
SELECT
defs.ITEM_ID, defs.DEF_ID

Mi kd la entidad tiene una clave compuesta de 2 campos ITEM_ID y DEF_ID. SQL Server falla porque en comparación con Oracle no admite t compuesto IN predicado.

Obviamente ese es un error en el mapeo producido por Hibernate. Mi pregunta es: ¿Cómo configurar / parchear Hibernate para proporcionar una comparación campo por campo de la muestra enlistada?

Respuestas

0 para la respuesta № 1

Esto debería lograr lo mismo. La combinación externa izquierda incluye todas las filas en k y las filas de d donde coincide en. d es nulo donde no coincide. Mi sintaxis puede estar un poco apagada. No puedo probarla, pero espero que esto te ayude a comenzar.

FROM k join k.defs kd
left outer join d.defs kd
...
WHERE ...
d is null