我正在尝试使用OpenJPA 2.2高效地获取两级嵌套关联。基本上,我有一个A
,其中一个B
有很多C
:
@Entity
public class A {
...
@ManyToOne(fetch=FetchType.EAGER)
private B b;
}
@Entity
public class B {
...
@OneToMany(mappedBy="b", fetch=FetchType.EAGER)
private List<C> cs;
}
@Entity
public class C {
...
}
我的JPQL查询如下:
SELECT a
FROM A a
WHERE a.id = some condition
我将EagerFetchMode设置为“PARALLEL”,以便有第二个查询来检索所有Cs
的{{1}}:
Bs
问题是openjpa正在为<property name="openjpa.jdbc.EagerFetchMode" value="parallel"/>
<property name="org.apache.openjpa.persistence.jdbc.EagerFetchMode" value="PARALLEL"/>
和As
生成n + 1个查询而不是2个:1个,Bs
生成一个:
C
和n次
SELECT *
FROM a
LEFT OUTER JOIN b
ON a.b_id = b.id
WHERE some condition
如何让openjpa发出两个查询而不是n + 1?