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

how to fetch only 80 rows from mysql database using Spring Data @query annotation?

我的查询是这样的

@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")

您可以使用分页(这在 JPA 中可用,在作为 JPA 提供者的 Hibernate 中也可用)

休眠:

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

JPA Query 还支持 setFirstResultsetMaxResults 方法。

使用:

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

我写了一个类似的答案post 。在您的情况下,查询将是您编写的第一个查询,但您必须将 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);