Ich bin Schweinchen-rückwärts von Wie Tabellen in einer unidirektionalen Viele-zu-eins-Bedingung zu verbinden? .
Wenn Sie zwei Klassen haben:
%Vor%B - & gt; A ist eine Beziehung von vielen zu eins. Ich verstehe, dass ich eine Sammlung von Bs zu A hinzufügen könnte, aber ich will diese Zuordnung nicht.
Meine eigentliche Frage lautet also: Gibt es eine HQL- oder Criteria-Methode zum Erstellen der SQL-Abfrage?
%Vor%Dadurch werden alle A-Datensätze mit einem kartesischen Produkt jedes B-Datensatzes abgerufen, der A referenziert und A-Datensätze enthält, auf die kein B verweist.
Wenn Sie Folgendes verwenden:
%Vor%Dann ist es ein innerer Join und Sie erhalten keine A-Datensätze, die kein B enthalten.
Ich habe keinen guten Weg gefunden, dies ohne zwei Abfragen zu tun, also wäre nichts weniger als das großartig.
Danke.
Sie können dies tun, indem Sie das fetch-Attribut angeben.
(10) fetch (optional) Wählen Sie zwischen sequenziellem Auswählen und Abrufen von externem Join.
Sie finden es unter: Kapitel 6. Collection Mapping , scrollen Sie nach unten zu: 6.2. Eine Sammlung zuordnen
BEARBEITEN
Ich habe im Kommentar Ihrer Frage gelesen, dass Sie eine Möglichkeit haben möchten, eine SQL-Abfrage auszuführen. Hier eine Referenz, die möglicherweise von Interesse sein könnte:
Kapitel 13 - Native SQL-Abfragen
und wenn Sie eine Möglichkeit haben möchten, es durch HQL möglich zu machen:
Kapitel 11. HQL: Die Hibernate-Abfragesprache
In Kapitel 11 möchten Sie nach 11.3 scrollen. Zuordnungen und Verknüpfungen .
%Vor%Ich denke jedoch, dass ClassB ein Mitglied von ClassA sein muss. Weitere Nacharbeiten sollen helfen.
Eine andere Sache, die sich als nützlich erweisen könnte, ist benannte Abfragen :
%Vor%Und diese Abfrage innerhalb von Code wie folgt aufrufen:
%Vor%Bitte werfen Sie einen Blick auf den referenzierten Link von Ayende, der ihn ausführlicher erklärt.
Tags und Links java hibernate orm many-to-one