当前位置: 首页 > 工具软件 > HibernateD > 使用案例 >

Hibernated多表查询

卫建义
2023-12-01

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;
 }

 

 

 类似资料: