Почему hibernate выполняет два запроса для активной загрузки двунаправленной ассоциации @OneToOne?
у меня есть сущность A, которая имеет сущность B, а B имеет сущность A с двунаправленной ассоциацией @OneToOne.
Теперь, когда я нахожу все записи A, hibernate выполняет два запроса с левым внешним соединением на 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;
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=?
Первый запрос загружает поля A и B, и это нормально, но зачем выполнять второй запрос для перезагрузки A? Я думаю, что этот запрос загружает содержимое A в B, но этот A, очевидно, является A, который содержит B ... так что он уже загружен первым запросом, не правда ли?
-- РЕДАКТИРОВАТЬ --
Сущность A:
@Entity
public class A implements Serializable{
// id and other ecc ecc
@OneToOne
@JoinColumn(name="id_b")
B b;
}
Сущность B:
@Entity
public class B implements Serializable{
// id and other ecc ecc
@OneToOne(mappedBy="b")
A a;
}
Это ситуация, и для findAll на A нужны два запроса ... зачем?