如何使用 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 还支持 setFirstResult
和 setMaxResults
方法。
使用:
@Query("....")
List<Object> countLimited(..., Pageable pageable);
我写了一个类似的答案post 。在您的情况下,查询将是您编写的第一个查询,但您必须将 Pageable 对象作为参数传递。假设您阅读了链接的答案,并且知道您的存储库应该扩展 JpaRepository
或 PagingAndSortingRepository
,它看起来像这样:
@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);
我的查询是这样的
@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 还支持 setFirstResult
和 setMaxResults
方法。
使用:
@Query("....")
List<Object> countLimited(..., Pageable pageable);
我写了一个类似的答案post JpaRepository
或 PagingAndSortingRepository
,它看起来像这样:
@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);