如何使用Spring Data @query注释从mysql数据库中仅获取80行?

时间:2015-10-20 09:41:02

标签: java mysql hibernate jpa spring-data-jpa

我的查询

@Query("select cnt from Content cnt  order by 
CASE WHEN cnt.status = 'rejected' THEN '1' 
WHEN cnt.status = 'modified'  ELSE cnt.status END ASC")

如何添加限制 0,100 行来添加query

我写了以下格式,但是从database

获取的所有行
@Query("select cnt from Content cnt  
  order by CASE WHEN cnt.status = 'rejected' THEN '1' 
  WHEN cnt.status = 'modified'  ELSE cnt.status END ASC limit 0,100")

3 个答案:

答案 0 :(得分:3)

我写了一篇类似帖子here的答案。在您的情况下,查询将是您编写的第一个,但您必须将Pageable对象作为参数传递。假设您已阅读链接的答案,并且知道您的存储库应该扩展JpaRepositoryPagingAndSortingRepository,它将如下所示:

@Query("select cnt from Content cnt 
       order by CASE WHEN cnt.status = 'rejected' THEN '1' 
       WHEN cnt.status = 'modified'  ELSE cnt.status END ASC")
public List<Content> getContents(Pageable pageable);

答案 1 :(得分:0)

您可以使用分页(这在JPA中可用,在Hibernate中也可用作JPA提供程序)

<强>休眠

Query query = session.createQuery("..YOUR QUERY HERE...");
query.setFirstResult(0);
query.setMaxResults(100);
List<Content> contentList = query.list();

JPA Query也支持setFirstResultsetMaxResults方法。

答案 2 :(得分:0)

使用:

@Query("....")
List<Object> countLimited(..., Pageable pageable);