java Hibernate框架qbc查询

吃惊 发布于 2016/08/27 19:31
阅读 155
收藏 0
  1. public QueryResult pagingQueryByWhere(Auction auction, Integer firstResult, Integer maxResult) {
  2. Session session = HibernateUtil.getSession();
  3. Criteria criteria =session.createCriteria(Auction.class);
  4. if(auction.getName()!=null) //根据名字模糊查询
  5. criteria.add(Restrictions.like("name", "%"+auction.getName()+"%")).setCacheable(true);
  6. if(auction.getDescription()!=null) //根据描述模糊查询
  7. criteria.add(Restrictions.like("description","%"+auction.getDescription()+"%")).setCacheable(true);
  8. if(auction.getStartUpTime()!=null) //查询大于等于开始时间的记录
  9. criteria.add(Restrictions.ge("startUpTime", auction.getStartUpTime())).setCacheable(true);
  10. if(auction.getEndTime()!=null) //查询小于等于结束时间的记录
  11. criteria.add(Restrictions.le("endTime", auction.getEndTime())).setCacheable(true);
  12. if(auction.getMoney()!=null) //查询大于等于起拍价的记录
  13. criteria.add(Restrictions.ge("money", auction.getMoney())).setCacheable(true);
  14. //查询总记录行数
  15. Long count = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
  16. @SuppressWarnings("unchecked")
  17. //根据结束时间降序排序并进行分页查询
  18. List<Auction> list =criteria.addOrder(Order.asc("endTime")).setFirstResult(firstResult).setMaxResults(maxResult).setCacheable(true).list();
  19. return new QueryResult(list,count);
  20. }

因为15行查询代码中,set了一个投影进去,所以导致18行生成的sql语句,出现了问题。

Hibernate: select count(*) as y0_ from auction this_ where this_.NAME like ?    15行代码生成的sql语句
Hibernate: select count(*) as y0_ from auction this_ where this_.NAME like ? order by this_.endTime asc limit ?    18行代码生成的sql语句

我希望18行的查询,返回的是表中的相应信息,该怎么改???

我去翻了hibernate官方的文档关于投影的部分,只讲了这么添加投影进去,没说怎么去去掉投影。

求大神指教!!

加载中
0
skhuhu
skhuhu
注释Long count = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();  分页不是你这样搞得
返回顶部
顶部