hibernate 查询应用总结-关联查询(二)

主要讨论cr.createCriteria(String arg0,String arg1,intarg2)关联,方法有三个参数,第一个是关联的对象属性,通常是set集合类型的对象,第二个是自己定义的别名,第三个是连接类型,有Criteria.LEFT_JOIN,Criteria.INNER_JOIN等。
生成的sql中包括left join ctl_change_info change1_ on this_.id=change1_.ctl_project_id,因为自己在设计表结构时没有考虑附表(多的一方)的数据为空,而添加的SQL语句显然将附表没有数据的主表记录排除在外,这根自己要的结果不一致。最后终于找到了解决办法:
select cp.*,cp.id,cci.id,cci.ctl_project_id from ctl_project cp left join ctl_change_info cci on cci.ctl_project_id = cp.id  group by cp.id

having (sum(CHAR_LENGTH(replace(cci.change_content_type,'conf',''))< CHAR_LENGTH(cci.change_content_type))  < 1) or (sum(CHAR_LENGTH(replace(cci.change_content_type,'conf',''))< CHAR_LENGTH(cci.change_content_type))  is null)

其中or后面的数据是将附表数据为null的也查询出来。

你可能感兴趣的:(Hibernate)