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, 这个问题纠结我好长时间,每次查询出来总行数后,在查询就不能查询实体的信息了即使setProjectinos为null,但是查询出来的结果在有关联的情况下是List<Object[]>类型的 也就是说DetachedCriteria本身还是有问题,具体的原因我说不出来.但是这也是一种解决方案.希望对大家也有所帮助, 这样就可以将DetachedCriteria进行封装,在分页条件下查询总行数, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |