0
我正在使用Spring批处理和JPA处理批处理作业并执行更新。我正在使用默认的Repository实现。Spring批处理Jpa存储库保存未提交数据
而我正在使用repository.save将修改的对象保存在处理器中。 另外,我没有在处理器或编写器中指定任何@Transactional注解。
我没有看到任何例外。选择发生很好。
是否有任何设置像“setAutoCommit(true)”,我应该使用JPA将数据保存在数据库中。
这里是我的步,读写器配置: 另外,我的配置类都被注解EnableBatchProcessing
@EnableBatchProcessing
public class UpgradeBatchConfiguration extends DefaultBatchConfigurer{
@Autowired
private PlatformTransactionManager transactionManager;
@Override
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(getdataSource());
factory.setTransactionManager(transactionManager);
factory.setTablePrefix("CFTES_OWNER.BATCH_");
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean(name = "updateFilenetJobStep")
public Step jobStep(StepBuilderFactory stepBuilderFactory,
@Qualifier("updateFileNetReader") RepositoryItemReader reader,
@Qualifier("updateFileNetWriter") ItemWriter writer,
@Qualifier("updateFileNetProcessor") ItemProcessor processor) {
return stepBuilderFactory.get("jobStep").allowStartIfComplete(true).chunk(1).reader(reader).processor(processor)
.writer(writer).transactionManager(transactionManager).build();
}
@Bean(name = "updateFileNetWriter")
public ItemWriter getItemWriter() {
return new BatchItemWriter();
}
@Bean(name = "updateFileNetReader")
public RepositoryItemReader<Page<TermsAndConditionsErrorEntity>> getItemReader(
TermsAndConditionsErrorRepository repository) {
RepositoryItemReader<Page<TermsAndConditionsErrorEntity>> reader = new RepositoryItemReader<Page<TermsAndConditionsErrorEntity>>();
reader.setRepository(repository);
reader.setMethodName("findAll");
HashMap<String, Direction> map = new HashMap<String, Direction>();
map.put("transactionId", Direction.ASC);
reader.setSort(map);
return reader;
}
}
而在作家,这是我在用Repository.save
repository.save(entity);
您可以分享您的job-context.xml或其他配置 –
请添加代码和配置以重现问题 –
使用Config类和我正在使用的repository.save方法更新它。请让我知道是否有任何东西错误 – jyn