Hibernated多表查询

Hibernate多表查询时候应该注意的地方:

可以使用left join。

关于嵌套查询:

 select * from (select * from users) 这种方式在hibernate中是行不到通的,

另外注意查询的sql语句是基于hibernate的PO对象的,而不是数据库表。

嵌套查询的时候可以使用in关键字,而不是使用from 关键字

 

下面给一个具体的实力,结合 distinct进行查询,查询完成后还要进行统计,统计记录的条数:

sb.append("select distinct t1 from TblTaskManage t1 left join t1.tblTaskManageCombinations s "
     + " left join t1.tblTaskManageViewers v  "
     + " where (s.combination.userId='" + userInfo.getUserId() + "'"
     + " or v.viewer.userId='"   + userInfo.getUserId() + "'"
     + " or t1.taskExerciser.userId= '" + userInfo.getUserId()+"'"
     + " or t1.taskAssigner.userId= '"+ userInfo.getUserId() + "') "); 
   sb.append(" and t1.commOrgIdenty = '"+userInfo.getCommOrgIdenty()+"'");

 

public Long countNo(String sb){
  Long totalCount = 0L;
  if(sb!=null){
   sb = StringUtils.substringBefore(sb, "order by");
   sb = " select count(*) from  TblTaskManage t where t.taskId in ("+sb+")";
   try {
    Number obj = (Number)this.createQuery(sb).uniqueResult();
    totalCount =  obj.longValue();
   } catch (RuntimeException e) {
    e.printStackTrace();
   }
  }
  return totalCount;
 }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值