DetachedCriteria 分页Projection取消聚合条件

 @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进行封装,在分页条件下查询总行数,




转载于:https://www.cnblogs.com/J2EEPLUS/archive/2011/11/13/2487917.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值