我有一个 Spring Batch 应用程序,可以读取和写入同一个表。由于我的数据量非常大,因此我使用分页来读取表中的项目。当我将块大小设置为大于 1 时,我的分页编号会错误更新,因此无法从表中读取某些项目。任何想法?
@Bean
@StepScope
public RepositoryItemReader<DedWorkFlowResponse> dedWorkFlowResponseItemReader() {
return new RepositoryItemReaderBuilder<DedWorkFlowResponse>()
.name("dedWorkFlowResponseItemReader")
.methodName("findByPickedIs")
.arguments(Collections.singletonList(false))
.pageSize(100)
.repository(dedWorkFlowResponseRepository)
.sorts(Collections.singletonMap("id", Sort.Direction.ASC))
.build();
}
public interface DedWorkFlowResponseRepository extends JpaRepository<DedWorkFlowResponse, Long> {
public Page<DedWorkFlowResponse> findByPickedIs(boolean picked,Pageable pageable);
}
@Component
public class Writer implements ItemWriter<DedWorkFlowResponse> {
@Autowired
ResponseRepository responseRepository;
@Autowired
DedWorkFlowResponseRepository dedWorkFlowResponseRepository;
@Override
public void write(List<? extends DedWorkFlowResponse> list) throws Exception {
List<Response> responses = new ArrayList<>();
list.stream().forEach(dedWorkFlowResponse ->{
Response response = new Response();
response.setName(dedWorkFlowResponse.getName());
response.setProcessedDate(new Date(System.currentTimeMillis()));
System.out.println(response.toString());
responses.add(response);
dedWorkFlowResponse.setPicked(true);
dedWorkFlowResponseRepository.saveAndFlush(dedWorkFlowResponse);
} );
responseRepository.saveAll(responses);
}
}
在作家中,我正在更新一些值DedWorkFlowResponse
Table
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)