弹簧数据页没有返回大小正确的页面?
我正在尝试使用从数据库中检索到的对象列表创建一个新的。首先,我从数据库获取所有元素,将其转换为流,然后使用 lambda 筛选结果。然后我需要一个具有一定数量元素的Page,但是,实例化一个新的似乎不会返回具有正确大小的页面。Page
PageImpl
这是我的代码:
List<Produtos> listaFinal;
Stream<Produtos> stream = produtosRepository.findAll().stream();
listaFinal = stream.filter(p -> p.getProdNome().contains("uio")).collect(Collectors.toList());
long total = listaFinal.size();
Page<Produtos> imp = new PageImpl<>(listaFinal,pageable,total);
下面是调试的屏幕截图:
请注意,Pageable 对象中的大小设置为 20,并且它知道它需要 4 个页面才能呈现 70 个元素,但它返回整个列表。
我错过了什么?
编辑回答托马斯的评论:
我了解如何使用 Page 仅返回一部分数据。我显示的代码是我试图使用 lambda 表达式来筛选我的集合。对我来说,问题是我想使用Java 8的lambda通过Spring Data JPA查询数据库。我习惯了VB。NET和Entity查询表达式,并想知道如何使用Spring JPA做同样的事情。function(x)
在我的存储库中,Im using 它使我可以访问.但是,谓词没有键入,因此我不能简单地在查询中使用。我正在使用SQL Server和Hibernate。extends JpaRepository<Produtos, Integer>, QueryDslPredicateExecutor<Produtos>
findAll(Predicate,Pageable)
p -> p.getProdNome().contains("uio")