如果你有这个实体:
@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。
我该怎么做?
答案 0 :(得分:0)
您必须使用join()。通常,最好始终使用join()进行关系。
请参阅, http://en.wikibooks.org/wiki/Java_Persistence/Criteria#JoinType