tengo tres entidades de la siguiente manera:Cómo optimizar una consulta JPA
public class EntityA
{
private Long id;
//Getters and setters
}
public class EntityB
{
private Long id;
private EntityA entitya;
//Getters and setters
}
public class EntityC
{
private Long id;
private BigDecimal amount;
private EntityB entityb;
//Getters and setters
}
Ahora, dada una instancia de EntityA, quiero obtener una lista de EntityC. Tengo dos opciones disponibles para mí actualmente. No sé cuál está más optimizado. Las opciones son:
1.
select c from EntityC c where c.entityb in (select b from EntityB b where b.entitya = :entitya)
2. añadir una nueva propiedad a EntityB
private Set<EntityC> entityCCol;
@OneToMany(mappedBy="entityb")
public Set<EntityC> getEntityCCol()
{
return entityCCol;
}
select b from EntityB a join fetch a.entityCCol b
¿Cuál de estas dos consultas es más fácil y optimizado?
Lo sobre 'select c from EntityC c donde c.entityB.entityA =: a'? si crea esta consulta y 'crea el índice IX_B_A en entityB (entityA, id)', la consulta resultante será lo suficientemente rápida. –