Ich habe ein Abfrageproblem in Hibernate. Ich habe eine Tabelle, "test", mit vorhandenen Daten. Ich habe eine Anforderung, wo ich das Schema der Testtabelle nicht ändern kann, also habe ich eine andere Tabelle erstellt, 'testExtension', deren Primärschlüssel ein Fremdschlüssel für den Primärschlüssel von Test ist. Daten in testExtension ist eine Teilmenge der Daten im Test. h. es wird weniger Zeilen in "testExtension" als in "test" geben.Abfragen von "Erweiterungstabellen" mit Hibernate
Ich habe diese Beziehung in einer Konfigurationsdatei wie folgt definiert:
<class name="Test" table="test">
<id name="testId" column="test_id">
<generator class="sequence">
<param name="sequence">test_id_seq</param>
</generator>
</id>
<property name="name"/>
<joined-subclass name="TestExtension" table="testExtension">
<key column="test_id"/>
<property name="summary" />
<property name="homepage"/>
</joined-subclass>
Mit diesem Setup, ich bin in der Lage ein TestExtension Objekt in meinem Java-Programm zu erstellen, es mit Daten zu füllen, Speichern Sie es über Hibernate, und bestätigen Sie die Transaktion. Und es speichert Daten sowohl in Test als auch in TestExtension korrekt.
Mein Problem tritt auf, wenn ich versuche, Daten aus diesen Tabellen abzufragen. Wenn ich jetzt eine bestimmte test_id unter Verwendung der TestExtension.class für QBE abfrage, wird nur eine Zeile zurückgegeben, wenn diese ID sowohl in Test als auch in TestExtension vorhanden ist. Wenn ich die Test.class zu QBE verwende, wird die Zeile zurückgegeben, aber ich habe keinen Zugriff auf die in TestExtension gespeicherten Daten.
Meine Frage ist: Wie kann ich diese Tabellen abfragen, so dass die Ergebnisse auf einem 'linken äußeren Join' von Test und TestExtension basieren? Jede Lösung wird geschätzt, ob es sich um eine Abfrage per Beispiel, HQL oder etwas anderes handelt (vorzugsweise nicht über Raw SQL).
Danke!
Ist es möglich, dass Sie Hibernate-Annotationen verwenden? Ich habe genau das gleiche mit Annotationen gemacht und wenn Sie wollen, kann ich Proben einreichen. –