Hallo zusammen,
fetch="join" macht nicht genau das, was ich mir so vorstelle, was vermutliche jedoch an meiner Vorstellung liegt. Hier eine kurze Beschreibung zum Problem:
Ich habe drei Tabellen: A, B und C die durch 1:n Beziehungen miteinander verknüpft sind. Also B ist eine Detail-Tabelle von A und C ist eine Detail-Tabelle von B.
Lazy Loading ist immer auf "false" gesetzt.
Geladen wird der Baum mit: session.get(A.class, new Integer(1));
Wenn ich jetzt bei allen Relationen fetch="select" definiere bekomme ich wie erwartet 3 Queries.
Wenn ich jetzt die Beziehung zwischen Tabelle A und B als fetch="join" definiere, bekomme ich wie erwartet 2 Queries und wenn ich zusätzlich noch die Beziehung zwischen B und C mit fetch="join" definiere bekomme ich 1 Query.
Jetzt hätte ich erwartet, dass wenn ich die Beziehung zwischen Tabelle A und Tabelle B als fetch="select" definiere und die Beziehung zwischen Tabelle B und C als fetch="join" definiere, ich ebenfalls nur 2 Queries erhalte. Nämlich eine für Tabelle A und eine für Tabelle B gejoined mit Tabelle C. Dem ist aber nicht so. In diesem Beispiel erhalte ich für jede Tabelle 1 Query, also insgesamt 3.
Wieso erkennt Hibernate (Version 3.2.2) nicht, dass ich die Tabellen B und C joinen möchte?
Ich hoffe ich habe mich verständlich ausgedrückt.
Danke und Gruss
|