2016-09-19 108 views
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); 
+0

您可以分享您的job-context.xml或其他配置 –

+0

请添加代码和配置以重现问题 –

+0

使用Config类和我正在使用的repository.save方法更新它。请让我知道是否有任何东西错误 – jyn

回答

0

我能够通过注入一个JPATransactionManager(作业存储库,作业,步骤等)而不是Autowired PlatformTransactionManager来解决此问题。

相关问题