Warum im Ruhezustand zwei Abfragen durchführen, um eine bidirektionale @OneToOne-Zuordnung zu laden?

Ich habe Entität A, die eine B-Entität hat, und B hat eine A mit einer bidirektionalen @OneToOne-Zuordnung.

Now, wenn ich alle A-Datensätze finde, führen Sie im Ruhezustand zwei Abfragen mit einem linken Outer Join auf B aus, etwa so:

select a.id, a.id_b, a.field1, b.id, b.field1 from A as a, B as b left outer join b ON b.id=a.id_b;
select a.id, a.id_b, a.field1, b.id, b.field1 from A as a, B as b left outer join b ON b.id=a.id_b WHERE b.id=?

First Abfrage laden A und B Felder und es ist in Ordnung, aber warum zweite Abfrage durchführen, um A neu zu laden? Ich denke, diese Abfrage lädt den A-Inhalt in B, aber dieses A ist offensichtlich das A, das B enthält ... also ist es bereits mit der ersten Abfrage geladen, nicht wahr?

- EDIT -

Entity A:

@Entity
public class A implements Serializable{
    // id and other ecc ecc
    @OneToOne
    @JoinColumn(name="id_b")
    B b;
}

Entity B:

@Entity
public class B implements Serializable{
    // id and other ecc ecc
    @OneToOne(mappedBy="b")
    A a;
}

Das ist die Situation, und ein findAll auf A braucht zwei Abfragen ... warum?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage