我希望看到如何在我拥有的存储库方法中将一个排序引入Query注释。 我已经在Google和这里看到了这段代码,但我无法使其正常工作
@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
Job findOneActiveOldest();
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
我知道通过分页我可以做到,但在某些情况下我不需要paginate,所以我想知道如何使用Query注释。
有什么建议吗?
答案 0 :(得分:18)
我不认为用@Query注释做到这一点。如果您不需要分页,则可以使用Sort参数:
来创建存储库方法@Query("{ state:'ACTIVE' }")
Job findOneActive(Sort sort);
并使用它:
yourRepository.findOneActive(new Sort(Sort.Direction.DESC, "created"))
答案 1 :(得分:1)
只需使用@Query
批注的sort参数。 1 = ASC,-1 = DESC
@Query(
value = ...,
sort = "{'details.requestTime': -1}"
)
答案 2 :(得分:0)
如果您还想进行分页,请使用 Pageable 作为方法参数而不是Sort。尝试以下代码:
@Query("{ state:'ACTIVE' }")
Job findOneActive(Pageable pageable);
yourRepository.findOneActive(new PageRequest(0, 1, new Sort(Sort.Direction.DESC,"created")));