¿Por qué Hibernate realiza dos consultas para cargar con entusiasmo una asociación bidireccional @OneToOne?
Tengo la entidad A que tiene una entidad B, y B tiene una A con asociación bidireccional @OneToOne.
Ahora, cuando encuentro registros A, hibernate realiza dos consultas con una combinación externa izquierda en B, algo como esto:
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=?
La primera consulta carga los campos A y B y está bien, pero ¿por qué realizar la segunda consulta para volver a cargar A? Creo que esta consulta carga el contenido A en B, pero esta A es obviamente la A que contiene B ... así que ya está cargada con la primera consulta, ¿no es cierto?
- EDITAR -
Entidad A:
@Entity
public class A implements Serializable{
// id and other ecc ecc
@OneToOne
@JoinColumn(name="id_b")
B b;
}
Entidad B:
@Entity
public class B implements Serializable{
// id and other ecc ecc
@OneToOne(mappedBy="b")
A a;
}
Esta es la situación, y findAll on A necesita dos consultas ... ¿por qué?