hibernate默认的,以及网络上的主流支持left join的表关系是one-to-many的,可以使用left join fetch(需要配置lazy="true" fetch="select"),也可以使用Criteria或者CriteriaQuery(link1 link2)来进行查询。
对于many-to-one,首先我们先建两个model:
@Entity
public class ClassOne {
public String id;
public boolean isDeleted;
}
@Entity
public class ClassTwo {
public String id;
@ManyToOne
public ClassOne classOne; // 父表
public boolean isDeleted;
}
目前有两个需求:
(1)select a.id,b.id from ClassTwo as b left join b.classOne as a;【正确,获取到了所有ClassOne表的数据项】
(2)select a.id,count(b.id) from ClassTwo as b left join b.classOne as a where a.isDeleted=false and b.isDeleted=false group by a.id;【count结果中把0的滤去了,没达到我的需求】
对于第二种,目前我还没找到具体的解决方法,仍需研究。