12

如果你有这个实体:

@Entity
public class A {

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

}

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

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

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

我怎样才能做到这一点?

4

1 回答 1

2

您必须使用 join()。一般来说,最好总是使用 join() 来处理关系。

见, http ://en.wikibooks.org/wiki/Java_Persistence/Criteria#JoinType

于 2013-04-10T13:36:57.907 回答