首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring Data JPA中将分页与条件查询结合起来?

问如何在Spring Data JPA中将分页与条件查询结合起来?
EN

Stack Overflow用户
提问于 2012-10-08 20:43:41
回答 2查看 23.1K关注 0票数 16

我使用PagingAndSortingRepository和findAll(可分页)方法来分页我的数据。我认为没有办法提供任何条件。例如,有时我想选择和分页地址,其中city=NY。有没有办法同时提供条件和分页?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-09 14:07:49

PagingAndSortingRepository只是在分页模式中添加了非常基本的CRUD方法。正如reference documentation所描述的,您只需向定义的任何查询方法添加一个Pageable参数,即可实现该查询的分页。

代码语言:javascript
复制
interface CustomerRepository implements Repository<Customer, Long> {

  Page<Customer> findByLastname(String lastname, Pageable pageable);

  List<Customer> findByFirstname(String firstname, Pageable pageable);
}

第一个方法将返回一个包含页面元数据的Page,如可用元素总数等。为了计算此数据,它将为派生的查询触发一个额外的计数查询。第二个查询方法返回普通切片结果集,而不执行count查询。

票数 14
EN

Stack Overflow用户

发布于 2012-10-08 22:08:53

对于分页,您需要2个方法,如getCount(可分页)和findAll(可分页)

然而,在Hibernate中利用此功能是微不足道的。如果您有任何HQL查询,您可以简单地这样做:

代码语言:javascript
复制
public Long getCount(Pageable pageable) {
    Query q = session.createQuery("Select count(t) From TableClass  t where t.city = 'NY'");
    Long cnt = (Long) q.uniqueResult();
    return cnt;
}

public List<TableClass> findAll(Pageable pageable) {
     Query q = session.createQuery("From TableClass  t where t.city = 'NY'");
     q.setFirstResult(start);
     q.setMaxResults(length);
     List<TableClass> tableClasslist = q.list();
     return tableClasslist;
}

同样,如果你有一个条件查询,它实际上是一样的:

代码语言:javascript
复制
public Long getCount(Pageable pageable) {
    Criteria c = session.createCriteria(TableClass.class);
    c.setProjection(Projections.rowCount()); 
    Long cnt = (Long) c.uniqueResult();
    return cnt;
}

public List<TableClass> findAll(Pageable pageable) {
    Criteria c = session.createCriteria(TableClass.class);
    c.setParameter("city","NY");
    c.setFirstResult(start);
    c.setMaxResults(length);
    List<TableClass> tableClasslist = c.list();
    return tableClasslist ;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12782023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档