Hibernate标准返回页面和rowcount [英] Hibernate criteria return page and rowcount
本文介绍了Hibernate标准返回页面和rowcount的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有任何有效的方法,以便在一个数据库调用中,我可以同时获得这两个数据,或者我可以减少数据库调用。
Criteria criteria = session.createCriteria(Student.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.ne(enquiryStatus,ENQUIRY.JOINED));
criteria.setMaxResults(10);
criteria.setFirstResult(((paginate.getStartIndex() - 1)* 10);
criteria.setProjection(Projections.rowCount());
//这里我需要获取总行数并记录
解决方案 div>
是的,你需要单独的查询来获得总结果数。
查询aCountQuery = session.createQuery(select count(s.id)from Student s
where s.enquiryStatus !=:enquiryStatus);
CountQuery.setParameter(enquiryStatus,ENQUIRY.JOINED);
Long resultCount =(Long)aCountQuery.uniqueResult();
或
Criteria criteria = session.createCriteria(Student.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.ne(enquiryStatus,ENQUIRY.JOINED));
criteria.setProjection(Projections.rowCount())
long resultCount =(Long)criteria.uniqueResult();
更新
现在,您可以使用相同的Criteria获得分页和结果计数结果
Criteria criteria = session.createCriteria(Student.class) ;
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.ne(enquiryStatus,ENQUIRY.JOINED));
criteria.setMaxResults(10);
criteria.setFirstResult(((paginate.getStartIndex() - 1)* 10);
列表< Student> students = criteria.list();
criteria.setProjection(null);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
Long resultCount =(Long)criteria.uniqueResult();
Using Hibernate Criteria i am trying to achieve pagination but the problem is that for every page fetch i have to make two db calls one for results and another for total records count. Is there any efficient way so that in a single db call i can get both the data or i can reduce db calls.
Criteria criteria=session.createCriteria(Student.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.ne("enquiryStatus", ENQUIRY.JOINED));
criteria.setMaxResults(10);
criteria.setFirstResult((paginate.getStartIndex()-1)*10);
criteria.setProjection(Projections.rowCount());
//here i need to fetch total row count and records
解决方案
Yes you need the separate query to get the total result count.
Query aCountQuery = session.createQuery("select count(s.id) from Student s
where s.enquiryStatus != :enquiryStatus");
aCountQuery.setParameter("enquiryStatus", ENQUIRY.JOINED);
Long resultCount = (Long)aCountQuery.uniqueResult();
or
Criteria criteria=session.createCriteria(Student.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.ne("enquiryStatus", ENQUIRY.JOINED));
criteria.setProjection(Projections.rowCount())
Long resultCount = (Long)criteria.uniqueResult();
Update
Now you can use same Criteria for results with pagination and result count
Criteria criteria=session.createCriteria(Student.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.ne("enquiryStatus", ENQUIRY.JOINED));
criteria.setMaxResults(10);
criteria.setFirstResult((paginate.getStartIndex()-1)*10);
List<Student> students = criteria.list();
criteria.setProjection(null);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
Long resultCount = (Long)criteria.uniqueResult();
这篇关于Hibernate标准返回页面和rowcount的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文