【问题标题】:how to fetch only 80 rows from mysql database using Spring Data @query annotation?如何使用 Spring Data @query 注释从 mysql 数据库中仅获取 80 行?
【发布时间】:2015-10-20 09:41:02
【问题描述】:

我的查询是这样的

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

【问题讨论】:

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


    【解决方案1】:

    我写了一个类似帖子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);
    

    【讨论】:

      【解决方案2】:

      您可以使用分页(这在 JPA 和 Hibernate 作为您的 JPA 提供程序中可用)

      休眠

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

      JPA Query 还支持 setFirstResultsetMaxResults 方法。

      【讨论】:

        【解决方案3】:

        使用:

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

        【讨论】:

          猜你喜欢
          • 2018-08-13
          • 2015-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-02
          • 2015-09-03
          相关资源
          最近更新 更多