Por que o hibernate executa duas consultas para carregar antecipadamente uma associação bidirecional @OneToOne?
eu tenho a entidade A que tem uma entidade B e B tem um A com associação bidirecional @OneToOne.
Agora, quando encontro todos os registros A, o hibernate executa duas consultas com uma junção externa esquerda em B, algo como isto:
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 primeira consulta carrega os campos A e B e está tudo bem, mas por que executar a segunda consulta para recarregar A? Eu acho que essa consulta carrega o conteúdo A em B, mas esse A é obviamente o A que contém B ... então já está carregado com a primeira consulta, não é verdade?
- EDITAR -
Entidade A:
@Entity
public class A implements Serializable{
// id and other ecc ecc
@OneToOne
@JoinColumn(name="id_b")
B b;
}
Entidade B:
@Entity
public class B implements Serializable{
// id and other ecc ecc
@OneToOne(mappedBy="b")
A a;
}
Esta é a situação, e um findAll on A precisa de duas consultas ... por quê?