JPA2标准:如何使用path.get()避免交叉连接

时间:2013-04-10 10:47:38

标签: java jpa jpa-2.0 criteria-api

如果你有这个实体:

@Entity
public class A {

    @ManyToOne
    @JoinColumn(name = "bField", nullable = true)
    private B myBObject;

}

我有一个标准的通用生成器,他会这样做:

Root<A> root = criteria.from(A.class);
root.get("myBObject").get("aFieldInB");

问题如下:生成的sql将包含A和B之间的CROSS JOIN。 但是我希望生成的sql包含A和B之间的LEFT JOIN。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您必须使用join()。通常,最好始终使用join()进行关系。

请参阅, http://en.wikibooks.org/wiki/Java_Persistence/Criteria#JoinType