加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DetachedCriteria 分页Projection取消聚合条件

发布时间:2020-12-13 20:15:25 所属栏目:百科 来源:网络整理
导读:@Override public PageBean findPaginated(DetachedCriteria detachedCriteria,PageBean pageBean) { // TODO 今天记得修改 去掉DetachedCriteria中的projection //根据该条件获得总记录数 Long total=this.getRowCount(detachedCriteria); ListT datas=this.
@Override
public PageBean findPaginated(DetachedCriteria detachedCriteria,PageBean pageBean) {
// TODO 今天记得修改 去掉DetachedCriteria中的projection
//根据该条件获得总记录数
Long total=this.getRowCount(detachedCriteria);
List<T> datas=this.findByCriteria(detachedCriteria,pageBean.getOffset(),pageBean.getPageSize());
pageBean.setDatas(datas);
pageBean.setTotal(total);
return pageBean;
}

// 使用指定的检索标准获取满足标准的记录数
public Long getRowCount(final DetachedCriteria detachedCriteria) {
return getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException,SQLException {
Criteria criteria=detachedCriteria.getExecutableCriteria(session);
CriteriaImpl criteriaImpl=(CriteriaImpl) criteria;
Projection projection=criteriaImpl.getProjection();
logger.debug("SQL:"+Projections.rowCount());
Long totalCount=(java.lang.Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
criteria.setProjection(projection);
if(projection==null){
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
}
return totalCount;
}
});

}


public List findByCriteria(DetachedCriteria criteria,int firstResult,
int maxResults) {
return getHibernateTemplate().findByCriteria(criteria,firstResult,
maxResults);
}

这个问题纠结我好长时间,每次查询出来总行数后,在查询就不能查询实体的信息了即使setProjectinos为null,但是查询出来的结果在有关联的情况下是List<Object[]>类型的

也就是说DetachedCriteria本身还是有问题,具体的原因我说不出来.但是这也是一种解决方案.希望对大家也有所帮助,

这样就可以将DetachedCriteria进行封装,在分页条件下查询总行数,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读