如何将仅包含排序信息的
Pageable
对象传递到 Spring JPA 存储库?
我想要这样的东西:
Pageable pageable = PageRequest.of(null, null, Sort());
我知道它需要
int
作为 page
和 size
但如果我们可以以某种方式不使用这些值并仅用 给出未分页的结果
Sort.by(Sort.Direction.ASC, "age")
我们可以使用像
1000
、 1000
这样的高数字来表示页面和大小,但我不想对这些值进行硬编码。
我也不打算为
Pageable
创建自定义实现。
请让我知道如何实现这一目标。
提前致谢。
根据 当前版本 Spring Data JPA 的文档,您可以将
Sort
直接传递给查询方法,因此您可以拥有同一查询方法的两个版本:
Pageable
的人,当您拥有“完整”Pageable
时使用。Sort
,当您只想执行排序时使用。这是实现此目的的一种方法:
PageRequest.of(0, Integer.MAX_VALUE, Sort.by("age"));
它之所以有效,是因为 size 是一个整数。这不是最漂亮的解决方案,但我认为它比创建另一个函数更好。
如果您坚持使用现有查询,则可以在查询中传递
Pageable.unpaged()
,然后对结果进行排序 (list.getContent().sort(Comparator.comparing(Item::getName))
)。