【发布时间】:2020-07-23 21:34:29
【问题描述】:
我正在使用 spring PagingAndSortingRepository 对数据库条目进行分页。 在处理过程中我需要删除一些条目..
当我调用存储库删除时,该条目被删除,之后问题在于下一个可分页。我没有从下一个 Pageable (pageRequest.next();) 中获取元素的大小。
有没有办法用分页进行迭代并并行执行crud操作。
部分代码
while (!onePage.isEmpty()) {
while (pageIterator.hasNext()) {
Object nextElement = pageIterator.next();
if (!falseCondition) {
log.info("sending message with Id {}", nextElement.getId());
repository.deleteById(nextElement.getId());
} else {
log.info("Lost connection");
return;
}
}
pageRequest = pageRequest.next();
onePage = repository.findAll(pageRequest);
pageIterator = onePage.iterator();
}
非常感谢。
【问题讨论】:
-
您没有得到任何结果还是没有得到正确的结果?
-
我没有得到正确的结果,从数据库中得到一个随机条目(分页大小为 3)
-
该页面基于查询返回的元素数量构建,并且每次您请求下一个偏移量和页面大小时都会运行它。如果您在处理页面时删除元素,则下一页请求将更改。看下面的例子: 查询完整的结果:1、2、3、4、5、6、7、8、9、10。第一页(尺寸3):1、2、3。删除2。第二页(尺寸3 ): 5, 6, 7. 如您所见,元素 4 没有返回,因为它在删除 2 后已成为第一页的一部分。您可以保存所有要删除的元素的 id 并在整个过程中执行一次结果集已处理
标签: java spring spring-boot spring-data-jpa