Ich bin sicher, ich bin dumm zu finden, aber ich kann nicht, diese zu Figur scheinen aus ...JPA beitreten links nicht verwendete Einträge
Ich habe zwei Tabellen:
Abteilung (haben, Name) Mitarbeiter (eid, zuerst, zuletzt, tat)
sie haben entsprechende Entitäten JPA verwaltet Abteilungen und Mitarbeiter. Mitarbeiter hat ein Abteilungsfeld, Abteilung hat keine Mitarbeiterliste. Ich möchte jedoch alle Abteilungen finden, die keine Mitarbeiter haben. plain old SQL Mit dieser ist einfach, mit einem LEFT JOIN:
SELECT d.*
FROM department as d LEFT OUTER JOIN employee as e
ON d.did = e.did
WHERE e.did IS NULL
Ich kann nicht sehen, wie diese Abfrage in JPQL obwohl zu übersetzen. Alle Beispiele, die ich für JPQL Links gefunden habe, durchqueren den Link zum Beispiel in die andere Richtung.
SELECT e FROM Employee e LEFT JOIN e.departmert d
Während ich etwas mehr brauchen wie
SELECT d FROM Department d LEFT JOIN d.???? WHERE e.department IS NULL
aber die Abteilung behält nicht einen Verweis auf seine Mitarbeiter (in meiner Anwendung ist es nicht Abteilungen und Mitarbeiter offensichtlich). Ist das in JPQL überhaupt möglich?
Brillant, perfekte Antwort durch: die Ergebnisse, die Sie wollen
Ohne Ihre Zuordnung zu ändern, sollten Sie in der Lage sein, so etwas wie diese Abfrage auszuführen. Ging für die Abfrage, anstatt das Mapping einzurichten. Ich bin mir sicher, dass die Abfrage nicht sehr effizient ist, aber nicht sehr oft aufgerufen wird. – wobblycogs
Sollte "IS EMPTY" auch verwendet werden, wenn das Objekt keine Sammlung ist, sondern nur eine OneToOne-Entität mit mappedBy? edit: yup, das funktioniert. – Amalgovinus