OpenJPA:如何急切地获取两级嵌套关联?

时间:2012-12-01 23:53:17

标签: java openjpa

我正在尝试使用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?

0 个答案:

没有答案