Hibernate里面如何用Criteria 查询记录数
2011-08-02 11:53
381 查看
【问题描述】在工作中,有一个比较复杂的feature使用的是Hibernate的Criteria实现的查询,但是PM要求在查询数据前,先告知用户有多少条数据,让用户去选择返回多少条记录。
【解决办法】使用Projections.count("property") 或者 Projections.rowCount()
查看Hibernate生成的query是:
备注:有些朋友可能使用的是c.list.size().返回的记录数,其实这样的话,hibernate是从数据库里面把所有满足条件的记录查询出来放到一个list里面,然后再用list的length返回长度。这样不是此需求的初衷。因为这样会消耗性能。。。并且在数据过多的情况下面,会造成tomcat的OutOFMemory错误
【解决办法】使用Projections.count("property") 或者 Projections.rowCount()
Criteria c = session.createCriteria(User.class.getName()); c.setProjection(Projections.rowCount()); CheckRowNumResponseBean result = new CheckRowNumResponseBean(); result.setRowNum(Integer.parseInt(c.uniqueResult().toString())); setResult(result);
查看Hibernate生成的query是:
select count(*) as y0_ from USER this_ where ( 1=1 )
备注:有些朋友可能使用的是c.list.size().返回的记录数,其实这样的话,hibernate是从数据库里面把所有满足条件的记录查询出来放到一个list里面,然后再用list的length返回长度。这样不是此需求的初衷。因为这样会消耗性能。。。并且在数据过多的情况下面,会造成tomcat的OutOFMemory错误
相关文章推荐
- Hibernate里面如何用Criteria 查询记录数
- 使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集
- Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
- hibernate中的query查询原生sql语句,如何获得返回记录中的每一个字段的值
- Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序
- Hibernate DetachedCriteria方式分页查询返回总记录数
- Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序
- Hibernate 可以用 select new map 查询出结果集 List,里面放一个一个 map。Mybatis 如何查出这样的 list?
- Hibernate里面的完全面向对象的查询(Criteria 接口)
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- Hibernate Criteria查询_查询一条记录
- Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序
- Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序
- SQL 语句 一对多关系,根据一查询多里面对应一的最新的一条记录
- Hibernate---Criteria查询
- oracle 如何查询过去某个时间点的记录(应用于某个时间点的误操作,回滚到之前的操作)
- Hibernate使用DetachedCriteria和Criteria查询
- Hibernate的学习之路十八(Criteria的查询简单)
- Hibernate(三)Criteria查询