12

我正在寻找如何将排序引入到我拥有的存储库方法中的查询注释中。我已经在谷歌和这里看到了这段代码,但我无法让它工作

@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
    Job findOneActiveOldest();

@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();

我知道通过分页我可以做到,但在某些情况下我不需要分页,所以我想知道如何使用 Query 注释来做到这一点。

请问有什么建议吗?

4

3 回答 3

26

我认为使用 @Query 注释不可能做到这一点。如果您不需要分页,您可以让您的存储库方法使用 Sort 参数:

@Query("{ state:'ACTIVE' }")
Job findOneActive(Sort sort);

并使用它:

yourRepository.findOneActive(new Sort(Sort.Direction.DESC, "created"))
于 2013-05-22T18:40:10.677 回答
7

只需使用@Query注释的排序参数。1 = ASC,-1 = DESC

    @Query(
        value  = ...,
        sort = "{'details.requestTime': -1}"
    )
于 2019-09-24T12:35:17.560 回答
0

如果您还想进行分页,则使用Pageable作为方法参数而不是 Sort。试试下面的代码:

@Query("{ state:'ACTIVE' }")
Job findOneActive(Pageable pageable);

yourRepository.findOneActive(new PageRequest(0, 1, new Sort(Sort.Direction.DESC,"created")));
于 2018-11-14T09:58:35.507 回答