如果我们不应用过滤器,我如何获取findAll ()
服务的所有记录?Spring Data JPA
当我们不应用过滤器时,它应返回所有记录而不是逐页显示。我有findAll (Pageable pageable)
服务并从自定义存储库调用它。是否可以仅使用分页在一个页面中获取所有记录?
答案 0 :(得分:4)
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
//Page<User> findAll(Pageable pageable); is already in this repository.
}
所以,如果你想找到第20页的第一页,请尝试:
Page<User> users = repository.findAll(new PageRequest(0, 20));
如果您想要做的是将所有实体放在一个页面上,那么它没有多大意义,但可以分两步完成:
int count = repository.count();
Page<User> users = repository.findAll(new PageRequest(0, count));
count()
来自CrudRepository
,由PagingAndSortingRepository
扩展。
答案 1 :(得分:1)
如果您不需要分页,请使用CrudRepository
代替PagingAndSortingRepository
答案 2 :(得分:0)
如果您正在使用PagingAndSortingRepository但仍需要“事物”列表,
您可以添加方法List<Thing> findBy()
如果您有RepositoryRestResource,它将作为REST公开:/things/search/findBy
答案 3 :(得分:0)
现在,PageRequest构造函数受到保护,您无法使用“ new”创建。 您必须调用静态方法:
PageRequest.of(int page, int size)
PageRequest.of(int page, int size, @NotNull Sort sort)
PageRequest.of(int page, int size, @NotNull Direction direction, @NotNull String... properties)
解决方案如下:
Page<User> users = repository.findAll(PageRequest.of(0, 20));
当然,您的UserRepository接口应该从PagingAndSortingRepository扩展:
public interface UserRepository extends PagingAndSortingRepository<User, Long>