Я запускаю прямое пакетное задание для чтения записи из базы данных DB2, я не получаю никакого результата или даже ошибки.
Любой взгляд, где я что-то упускаю ?
Вот код пакета.
@Configuration
@EnableBatchProcessing
@AllArgsConstructor
public class ETLConfig {
private JobBuilderFactory jobBuilderFactory;
private StepBuilderFactory stepBuilderFactory;
private EntityManagerFactory emf;
@Bean
public Step sampleStep(){
return stepBuilderFactory.get("sampleStep")
.<String, String>chunk(5)
.reader(itemReader())
.writer(i -> i.stream().forEach(j -> System.out.println(j)))
.build();
}
@Bean
public Job sampleJob(){
return jobBuilderFactory.get("sampleJob")
.incrementer(new RunIdIncrementer())
.start(sampleStep())
.build();
}
@Bean
public JpaPagingItemReader itemReader(/*@Value("${query}") String query*/){
return new JpaPagingItemReaderBuilder<>()
.name("db2Reader")
.entityManagerFactory(emf)
.queryString("select * FROM EXPORT.FCR_HDR F WHERE F.FCR_REF = 'R2G0128330'")
.pageSize(3)
.build();
}
}
Если я выполняю тот же запрос в БД, я получаю выходные данные этой ссылки.
@ Компонент @AllArgsConstructor publi c класс NoPersistenceBatchConfigurer расширяет DefaultBatchConfigurer {
@Bean
public DataSource batchDataSource() throws ClassNotFoundException {
return DataSourceBuilder.create()
.driverClassName("org.h2.Driver")
.url("jdbc:h2:mem:testdb")
.username("sa")
.password("")
.build();
}
@Override
public void setDataSource(DataSource batchDataSource) {
try {
super.setDataSource(batchDataSource());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}