使用结果和计数在Hibernate中搜索条件

时间:2016-10-24 19:25:46

标签: hibernate pagination hibernate-criteria

我在表格中有多个字段的搜索条件。是否可以使用相同的hibernate条件对象来获取Result(使用setFirstResult和setMaxResult)并计算分页?我是指具有分页的搜索条件的结果集以及该特定搜索条件的结果总数。

步骤:

  1. 使用我的搜索参数创建条件。
  2. 设置第一个和最大结果参数。
  3. 创建行计数投影。 (这应该返回我的搜索参数的总数,而不是我的第一个和最大结果参数)。
  4. 获取当前页面结果集。
  5. 获取搜索条件的总计数。

1 个答案:

答案 0 :(得分:0)

简单的分页看起来像这样

public List<YourEntity> findDeviceTransactions(Integer id) {
    return session.createCriteria(YourEntity.class)
            .add(Restrictions.eq("id", id)) // add more Restrictions if you want
            .setFirstResult(page)
            .setMaxResults(10) //this can be a constant in your properties
            .list();

}

计数看起来像

 public int countYourEntityForPagination(Integer id) {
     return ((Number) session.createCriteria(YourEntity.class)
            .add(Restrictions.eq("id", id)) // add more Restrictions if you want
            .setProjection(Projections.rowCount())
            .uniqueResult()).intValue();
}