Java Spring批处理JpaPagingItemReader只读第一个结果

Java Spring批处理JpaPagingItemReader只读第一个结果,java,spring,spring-data-jpa,spring-batch,Java,Spring,Spring Data Jpa,Spring Batch,我正在批量使用JpaPagingItemReader,修改Readers查询的基础数据。编写器将状态设置为COMPLETED,然后继续处理下一个块 结果是省略了行。当您有100行要处理,块(和读取器大小)为10时,读取器读取10行并处理它们。在第二次读取时,他尝试读取数据的第2页,但在我的例子中,使用了一个查询,该查询也会询问ITS'sWhere子句中的状态。因此,记录的数量同时减少到了90。第2页的读取器现在将从结果列表中读取第11-20行,并跳过前10行 由于没有其他的JPA读者,我的问题是

我正在批量使用
JpaPagingItemReader
,修改Readers查询的基础数据。编写器将状态设置为
COMPLETED
,然后继续处理下一个块

结果是省略了行。当您有100行要处理,块(和读取器大小)为10时,读取器读取10行并处理它们。在第二次读取时,他尝试读取数据的第2页,但在我的例子中,使用了一个查询,该查询也会询问ITS'sWhere子句中的状态。因此,记录的数量同时减少到了90。第2页的读取器现在将从结果列表中读取第11-20行,并跳过前10行

由于没有其他的JPA读者,我的问题是 如果可以操纵Reader类始终传递前10行。请不要抵销!例如,在处理器或写入程序中操作项目读取器的当前页面。或者用另一种方法来解决这个问题


顺便说一句,我们不能使用游标项读取器,因为它会使游标保持打开状态,这会导致在我们必须从中读取数据的旧的遗留DB2数据库中出现锁定情况。

您描述的情况已经存在。我想,您需要解释为什么在您的用例中需要修改Readers查询的基础数据?最好在where子句之外使用第二个标志,并在以后的步骤中使用该标志来更新您在Readers where子句中实际使用的标志或状态。但这种方法对我来说不可行,因为数据来自遗留数据库,不会被修改。我正在寻找一种解决方案,它以一种总是读取第0页的方式操纵JpaPagingitemReader。我想,您需要解释为什么在您的用例中需要修改Readers查询的基础数据?最好在where子句之外使用第二个标志,并在以后的步骤中使用该标志来更新您在Readers where子句中实际使用的标志或状态。但这种方法对我来说不可行,因为数据来自遗留数据库,不会被修改。我正在寻找一种解决方案,该解决方案以JpaPagingitemReader始终读取第0页的方式操纵JpaPagingitemReader。