我有三个实体如下:如何优化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
}
现在,鉴于EntityA的一个例子,我想EntityC的列表。目前我有两种选择。我不知道哪一个更优化。选项有:
1.
select c from EntityC c where c.entityb in (select b from EntityB b where b.entitya = :entitya)
2. 添加一个新的属性EntityB
private Set<EntityC> entityCCol;
@OneToMany(mappedBy="entityb")
public Set<EntityC> getEntityCCol()
{
return entityCCol;
}
select b from EntityB a join fetch a.entityCCol b
这两个查询更容易和优化?
什么关于'从EntityC c中选择c,其中c.entityB.entityA =:a'?如果你创建了这个查询,并且在entityB(entityA,id)上创建索引IX_B_A,那么结果查询就足够快了。 – 2012-07-12 10:42:59