jestem pewien, że jestem głupi, ale nie wydają się rysunek to jedno ...JPA lewej przyłączyć znaleźć nieużywane wpisy
Mam dwie tabele:
działem (nie, imię i nazwisko) pracownik (eid, pierwszy, ostatni, zrobił)
mają odpowiednie podmioty W JPA zarządza Departament i pracownik. Pracownik ma pole Deparment, Departament nie prowadzi listy Pracowników. Co chcę zrobić, to znaleźć wszystkie departamenty, które nie mają pracowników. Używając zwykłego starego SQL, jest to łatwe z lewym złączeniem:
SELECT d.*
FROM department as d LEFT OUTER JOIN employee as e
ON d.did = e.did
WHERE e.did IS NULL
Nie widzę jednak tłumaczenia tego zapytania na język JPQL. Wszystkie przykłady, które znalazłem dla lewych złączek JPQL, przechodzą na przykład przez łącze.
SELECT e FROM Employee e LEFT JOIN e.departmert d
Podczas gdy muszę coś bardziej jak
SELECT d FROM Department d LEFT JOIN d.???? WHERE e.department IS NULL
ale dział nie utrzymuje odniesienie do jego pracowników (w mojej aplikacji nie jest oczywiście wydziałów i pracowników). Czy jest to możliwe nawet w JPQL?
Brilliant, doskonała odpowiedź dzięki. Poszedłem do kwerendy zamiast konfigurowania mapowania. Jestem pewien, że zapytanie nie jest bardzo wydajne, ale nie będzie się nadawać zbyt często. – wobblycogs
Czy "IS EMPTY" powinno być używane również wtedy, gdy przedmiot nie jest zbiorem, ale jest tylko jednostką OneToOne z mapowanym plikiem? edit: tak, działa. – Amalgovinus