使用Springs自动实现的存储库是否可以限制findAll方法的结果大小?
我正在尝试在界面中声明以下内容:
List<XY> findAllTopTen();
不幸的是,它不起作用(这)......
答案 0 :(得分:14)
如果您没有来自控制器的Pageable
对象,只需要从DB获取X对象,您可以执行以下操作:
首先,您的Repository类必须扩展JpaRepository<T, ID>
,以便能够使用Pageable对象进行查询。
其次,您可以通过以下方式定义Pageable对象:
Pageable limit = PageRequest.of(0,10);
return repository.findall(limit);
在这种情况下,查询将返回前10个对象。
您可以找到更多信息here(向下滚动到4.1,示例4)
请注意,该示例实际上扩展了PagingAndSortingRepository
,但JpaRepository
包含PagingAndSortingRepository
中的所有方法,并且还具有其他功能。
编辑:感谢@Zunnii指出new PageRequest()
现已弃用。我编辑了上面的代码段以反映出来。
答案 1 :(得分:9)
将Pageable
作为参数传递,如下所示:
Page<x> findAll(Pageable pageable);
答案 2 :(得分:2)
您需要明确指定排序,否则Spring Data JPA无法决定应该使用的标准。例如:
List<XY> findAllTopTenByAge();
中的详细信息