【发布时间】:2021-08-12 00:30:36
【问题描述】:
我有这个 ItemReader:
@Bean
public JpaPagingItemReader<GWBillingDetails> itemReaderUpdPCJPA() {
JpaPagingItemReader<GWBillingDetails> reader = new JpaPagingItemReader();
reader.setName("jpaPagingUpdPCReader");
reader.setEntityManagerFactory(entityManagerFactory.unwrap(SessionFactory.class));
reader.setPageSize(10);
reader.setQueryString("Select pc from GWPaymentClaim pc INNER JOIN GWTransazioni tr ON tr.id = pc.id.idTransazione WHERE pc.kbStatus = 'SENT' AND tr.status = 'P'");
reader.setSaveState(true);
return reader;
}
在它的 ItemProcessor 中,我有一些细化逻辑,在特定条件下,它可以对 DB 中的实体进行更新。 假设我们有21条记录被ItemReader读取(那么它们被ItemReader分成3页)并且第一页只有一条记录满足这个条件(所以这条记录被更新),ItemReader莫名其妙地跳过了第二页的第一条记录。 相反,如果记录是两条,则项目阅读器会跳过第二页上的前两条记录,等等...。
谁能告诉我为什么?
【问题讨论】:
标签: java spring spring-boot spring-data-jpa spring-batch