当前位置: 首页 > 面试题库 >

休眠条件返回页和行数

吕向阳
2023-03-14
问题内容

我正在使用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

问题答案:

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

    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标准吗? 问题答案: 我遇到了完全相同的问题,并且能够像这样解决它: 注:,和在上面的代码指在属性名,和类,相应地(类具有属性等)。 对于此解决方案,您甚至不需要在中设置和参数。

  • 问题内容: 我正在尝试运行一个更新查询,它将在sql中看起来像这样: 我正在尝试使用 Criteria 这样重新创建查询: 这行不通,因为满足该条件的行很多,我的独特结果是我猜这里的问题。如何将其转换为符合条件的所有行的更新。我不想使用HQL查询,而是使用Criteria来执行。 问题答案: 始终建议执行批量操作非常接近数据库,除非需要,否则我们不需要在会话中保留更新的对象,因此,在执行批量操作时

  • 问题内容: 我需要使用detachedCriteria进行此SQL查询: 这个想法是从不属于用户的游戏中获取ID。我尝试了与detachedCriteria类似的10种不同方法,但得到了“未知实体:null” MappingException代码应类似于: 还设置投影以仅返回游戏的ID。 有任何想法吗?我认为Hibernate在加入没有别名的查询时会遇到一些麻烦。添加别名是可行的,但结果是完全错误

  • 问题内容: 在我当前的项目中,我遇到了使用hibernate条件查询获取实体的问题。我有以下实体: 教授,其中包含学生名单 学生,其中包含作业列表。 作业,其中包含分配到的学生的ID。 现在,我想获得与教授有关的所有作业,即教授分配给他的学生的所有作业。 此查询显示我要在条件查询中实现的内容。 如何使用hibernate条件API实施此查询? 问题答案: 假设您的表格是这样的: 使用别名的简单示例

  • 问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用hibernate标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 问题答案: 您可以尝试以下 这里parent是中的属性名称,child

  • 问题内容: 对于似乎很简单的问题,我找不到解决方案。假设有2种实体类: 如何创建一个标准查询以返回包含至少一个满足给定条件(例如b.text =’condition’)的B实体的所有A? 问题答案: 我认为此链接可能很有用:http : //mikedesjardins.net/2008/09/22/hibernate-criteria- subqueries-exists/ 它包含以下有关如何创