/ / SQL Server + hibernacja klucza złożonego kończy się niepowodzeniem w predykacie IN - serwer sql, hibernacja, klucz złożony

SQL Server + hibernacja klucza złożonego kończy się niepowodzeniem w predykacie IN - serwer-sql, hibernacja, klucz złożony

Migruję jakiś projekt na Hibernate (nie jestem pewien co do wersji, która jest osadzona w JBoss5.1.0GA wygląda jak 3.x) z Oracle do SQL Server.

Jedno z zapytań w HQL wygląda tak:

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

W MSSQL to zapytanie zostało wykonane (i nie powiodło się) jako:

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

Mój kd encja ma klucz złożony z 2 pól ITEM_ID i DEF_ID. SQL Server nie działa, ponieważ w porównaniu z Oracle nie obsługuje złożonego IN orzec.

Oczywiście jest to błąd w mapowaniu wygenerowany przez Hibernate. Moje pytanie brzmi: Jak skonfigurować / załączyć Hibernate, aby zapewnić porównanie próbek z listy do pola?

Odpowiedzi:

0 dla odpowiedzi № 1

To powinno zrobić to samo. Lewe sprzężenie zewnętrzne zawiera wszystkie wiersze w k i wiersze od d, w których pasuje on. d ma wartość null, jeśli nie pasuje, moja składnia może być trochę za mała - nie jestem w stanie go przetestować, ale mam nadzieję, że to się zaczyna.

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