使用Spring限制查找所有可能吗?

时间:2015-10-08 14:12:41

标签: spring spring-data

使用Springs自动实现的存储库是否可以限制findAll方法的结果大小?

我正在尝试在界面中声明以下内容:

List<XY> findAllTopTen();

不幸的是,它不起作用(这)......

3 个答案:

答案 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();

请参阅official documentation

中的详细信息