现在的位置: 首页 > 综合 > 正文

关于hibernate的left join

2012年08月24日 ⁄ 综合 ⁄ 共 611字 ⁄ 字号 评论关闭

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的滤去了,没达到我的需求】 

对于第二种,目前我还没找到具体的解决方法,仍需研究。 

 

【上篇】
【下篇】

抱歉!评论已关闭.