2016-09-19 31 views
0

バッチジョブを処理して更新を実行するためにSpring BatchとJPAを使用しています。私はデフォルトのリポジトリの実装を使用しています。Spring Batch Jpa Repositoryデータを保存しないで保存

そして、私はrepository.saveを使用して、変更されたオブジェクトをプロセッサに保存しています。 また、プロセッサやライターに@Transactional Annotationが指定されていません。

私はどこにも例外はありません。選択はうまくいく。

JPAでDBにデータを保存するために使用する必要がある「setAutoCommit(true)」のような設定はありますか?ここで

は私のステップ、リーダライタの設定です: はまた、私のconfigクラスは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
を使用していますものです

私は、Autowired PlatformTransactionManagerの代わりにJPATransactionManagerを(ジョブリポジトリ、ジョブ、ステップなど)注入することでこれを解決できました。

関連する問題