0
とJobSynchronizationManager.release()
で2回呼び出されているので、closeメソッドで失敗しているHibernateCursorItemReaderがあります。HibernateCursorItemReaderのcloseメソッドの呼び出しに失敗しました
@Configuration
@ConfigurationProperties("job.entity")
public class EntityJobConfig {
@Setter
@NotNull(message = "chunkSize cannot be null")
@Min(value = 1, message = "chunkSize must be 1 at least")
private int chunkSize;
@Autowired
private JobBuilderFactory jobs;
@Autowired
private StepBuilderFactory steps;
@Autowired
private EntityManager entityManager;
@Bean
Job job() {
return this.jobs.get("job")
.start(this.step())
.build();
}
@Bean
Step step() {
return this.steps.get("step")
.<Entity, Entity>chunk(this.chunkSize)
.reader(this.reader(null))
.writer(this.writer())
.build();
}
@Bean
@JobScope
HibernateCursorItemReader<Entity> reader(@Value("#{jobParameters['entityId']}") Integer entityId) {
HibernateCursorItemReader<Entity> reader = new HibernateCursorItemReader<>();
reader.setUseStatelessSession(false);
reader.setSessionFactory(this.entityManager.getEntityManagerFactory().unwrap(SessionFactory.class));
reader.setFetchSize(this.chunkSize);
reader.setQueryString("...");
reader.setParameterValues(ImmutableMap.of("entityId", entityId));
return reader;
}
}
これは意図した動作ですか?
バグがある場合は、結論を下す前に構成を追加してください。 –
自分の設定で質問が更新されました。 –
「@ StepScope」を使用すると、好奇心から外れて、うまく動作しますか? –