程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了休眠条件返回页和行数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决休眠条件返回页和行数?

开发过程中遇到休眠条件返回页和行数的问题如何解决?下面主要结合日常开发的经验,给出你关于休眠条件返回页和行数的解决方法建议,希望对你解决休眠条件返回页和行数有所启发或帮助;

是的,您需要单独的查询来获取总结果计数。

    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();

要么

   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=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
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);

 criteria.setProjection(Projections.rowCount());
//here i need to fetch total row count and records

大佬总结

以上是大佬教程为你收集整理的休眠条件返回页和行数全部内容,希望文章能够帮你解决休眠条件返回页和行数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: