小编dub*_*nzi的帖子

Spring Data PageImpl没有返回正确大小的页面?

我正在尝试Page使用从数据库中检索的对象列表来创建新的.首先,我从DB获取所有元素,将其转换为Stream,然后使用lambda过滤结果.然后我需要一个具有一定数量元素的页面,但是,实例化一个新的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);
Run Code Online (Sandbox Code Playgroud)

这是调试的屏幕截图:

请注意,Pageable对象中的大小设置为20,并且它理解它需要4个页面来呈现70个元素,但它返回整个列表.

我错过了什么?

编辑回答托马斯的评论:

我理解如何使用Page返回一小部分数据.我展示的代码是我尝试使用lambda表达式来过滤我的集合.对我来说问题是我想使用Java 8的lambda通过Spring Data JPA查询数据库.我习惯了VB.NET和Entity function(x)查询表达式,并想知道如何使用Spring JPA做同样的事情.

在我的存储库中,Im使用extends JpaRepository<Produtos, Integer>, QueryDslPredicateExecutor<Produtos>它可以访问findAll(Predicate,Pageable).但是,Predicate没有输入,所以我不能简单地p -> p.getProdNome().contains("uio")在查询中使用.我正在使用SQL Server和Hibernate.

java spring spring-mvc spring-data spring-data-jpa

10
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×1

spring ×1

spring-data ×1

spring-data-jpa ×1

spring-mvc ×1