23 Stimmen

(Lazy) LEFT OUTER JOIN unter Verwendung der Hibernate Criteria API

Ich möchte einen LEFT OUTER JOIN zwischen zwei Tabellen mit Hilfe der Criteria API durchführen. Alles, was ich in der Hibernate-Dokumentation finden konnte, ist diese Methode:

Criteria criteria = this.crudService
            .initializeCriteria(Applicant.class)
            .setFetchMode("products", FetchMode.JOIN)
            .createAlias("products", "product");

Aufgrund der Anzahl der zurückgegebenen Ergebnisse wird jedoch entweder eine innere oder eine äußere rechte Verknüpfung durchgeführt.

Ich möchte auch, dass mein Join Lazy ist. Wie kann ich das tun?

Zum Wohl!

UPDATE: Es scheint, dass die Verwendung von Aliasen die Verbindung automatisch zu einem INNER JOIN macht. Es gibt da etwas in der "Hintergrundgeschichte", das ich noch nicht begriffen habe. Also, heute kein Alias. Das lässt mich mit dem Problem zurück, Einschränkungen auf die beiden Tabellen anzuwenden, da beide eine Spalte (oder Eigenschaft, wenn dies angemessener ist) haben ' Name '.

39voto

sdavids Punkte 1527

Wenn Sie eine linke Verknüpfung in der Produkttabelle benötigen, tun Sie dies einfach:

.....createAlias("Produkte", "produkt", Criteria.LEFT_JOIN);

27voto

Ankit Sharma Punkte 1504

Die API von Sdavids Antwort lautet deprecated jetzt. Die aktualisierte Version lautet

....createAlias("Mitarbeiter", "emp", JoinType.LEFT_OUTER_JOIN)

0voto

KLE Punkte 22895

Eine Verknüpfung ist in der SQL-Anfrage enthalten. Er kann nicht faul sein.


Um diese Daten mit Hibernate abzurufen, schließen Sie sie einfach aus der HQL-Anfrage aus. Wenn Sie dann auf die Getter Ihrer Entität zugreifen (wenn Ihre Session noch offen ist), werden sie automatisch geladen (Sie müssen diesen Teil der Anfrage nicht schreiben).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X