Привет, я использую весеннюю партию в первый раз. Моим вариантом использования является то, что я должен загружать данные из oracle db в файл csv, используя Spring boot и Spring Data. У меня возникают трудности с настройкой oracle db в ItemReader. Кто-нибудь может мне помочь.Загрузка данных в CSV-файл из базы данных Oracle с использованием Spring Batch, boot и Spring Jpa
Вот мой код
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
public PersonAcctRepository personAcctRepository;
@Bean
public ItemWriter<CustomerInsr> writer(){
FlatFileItemWriter<CustomerInsr> writer = new FlatFileItemWriter<CustomerInsr>();
String exportFileHeader = "FIRST_NAM, MIDDLE_NAM, LAST_NAM";
StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
writer.setHeaderCallback(headerWriter);
writer.setResource(new ClassPathResource("sample-data.csv"));
LineAggregator<CustomerInsr> lineAgg = createCustomerInsrAgg();
writer.setLineAggregator(lineAgg);
return writer;
}
@Bean
public LineAggregator<CustomerInsr> createCustomerInsrAgg(){
DelimitedLineAggregator<CaresCustomerInsr> deliAgg = new DelimitedLineAggregator<CustomerInsr>();
deliAgg.setDelimiter(",");
FieldExtractor<CustomerInsr> fieldExtractor = createCustomerInsrExtractor();
deliAgg.setFieldExtractor(fieldExtractor);
return deliAgg;
}
@Bean
public FieldExtractor<CustomerInsr> createCustomerInsrExtractor(){
BeanWrapperFieldExtractor<CustomerInsr> fieldExtractor = new BeanWrapperFieldExtractor<CustomerInsr>();
fieldExtractor.setNames(new String []{"firstName", "middleName", "lastName"});
return fieldExtractor;
}
@Bean
public ItemReader<CustomerInsr> reader(){
RepositoryItemReader<CustomerInsr> reader = new RepositoryItemReader<CustomerInsr>();
reader.setRepository(personAcctRepository);
reader.setMethodName("findAll");
return reader;
}
@Bean
public Job job(){
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.flow(step())
.end()
.build();
}
@Bean
public Step step(){
return stepBuilderFactory.get("step")
.<CustomerInsr, CustomerInsr> chunk(10)
.reader(reader())
.writer(writer())
.build();
}
}
Можете ли вы уточнить, что отсутствует/неправильно. трассировки стека? –
Я пытаюсь прочитать данные из oracle db, я использую репозитории данных Spring (репозиторий JPA, используя метод findAll()). Я предоставляю свойства базы данных в файле application.properties. Как мне настроить метод (findAll()) и источник данных в ItemReader –