2017-05-22 21 views
0

JobSynchronizationManager.release()で2回呼び出されているので、closeメソッドで失敗している​​HibernateCursorItemReaderがあります。HibernateCursorItemReaderのcloseメソッドの呼び出しに失敗しました

@Configuration 
@ConfigurationProperties("job.entity") 
public class EntityJobConfig { 

    @Setter 
    @NotNull(message = "chunkSize cannot be null") 
    @Min(value = 1, message = "chunkSize must be 1 at least") 
    private int chunkSize; 

    @Autowired 
    private JobBuilderFactory jobs; 

    @Autowired 
    private StepBuilderFactory steps; 

    @Autowired 
    private EntityManager entityManager; 

    @Bean 
    Job job() { 
     return this.jobs.get("job") 
      .start(this.step()) 
      .build(); 
    } 

    @Bean 
    Step step() { 
     return this.steps.get("step") 
      .<Entity, Entity>chunk(this.chunkSize) 
      .reader(this.reader(null)) 
      .writer(this.writer())  
      .build(); 
    } 

    @Bean 
    @JobScope 
    HibernateCursorItemReader<Entity> reader(@Value("#{jobParameters['entityId']}") Integer entityId) { 
     HibernateCursorItemReader<Entity> reader = new HibernateCursorItemReader<>(); 
     reader.setUseStatelessSession(false); 
     reader.setSessionFactory(this.entityManager.getEntityManagerFactory().unwrap(SessionFactory.class)); 
     reader.setFetchSize(this.chunkSize); 
     reader.setQueryString("..."); 
     reader.setParameterValues(ImmutableMap.of("entityId", entityId)); 
     return reader; 
    } 
} 

これは意図した動作ですか?

+0

バグがある場合は、結論を下す前に構成を追加してください。 –

+0

自分の設定で質問が更新されました。 –

+0

「@ StepScope」を使用すると、好奇心から外れて、うまく動作しますか? –

答えて

0

@StepScopeまたは​​がリーダ/ライターを閉じている理由を理解するために少し掘り下げておく必要がありますが、これは読者が簡単に修正できるものです。私はこれに対処するためにJiraの問題を開いた。あなたはここでそれを追跡することができます:https://jira.spring.io/browse/BATCH-2619

関連する問題