作家班结束后 . spring 批处理执行中发生错误 . 所有读取数据都要回滚,而块数据不会插入到DB中 .

“步骤执行数据已更新错误时提交失败”是什么意思?为什么会出现这个日志?

是作家插入交易的时间问题吗?

如果有一次插入事务(注释掉'recordDataService.insertRecordData(recordData);',则没有问题 .

My Code :

@Override
    public void write(List<? extends RecordInfo> items)  {

    log.info("########################################################");
    log.info("write");
    log.info("########################################################");

    recordInfoService.insertRecordInfo(recordInfos.get(0));

    for( RecordData recordData : recordInfos.get(0).getRecordDataList()){
                recordDataService.insertRecordData(recordData);
    }

The Log of each other writer :

2015-07-17 00:05:38.995  INFO 42558 --- [           main] c.s.c.b.j.c.CollectRecordItemWriter      : ########################################################
2015-07-17 00:05:38.995  INFO 42558 --- [           main] c.s.c.b.j.c.CollectRecordItemWriter      : write
2015-07-17 00:05:38.995  INFO 42558 --- [           main] c.s.c.b.j.c.CollectRecordItemWriter      : ########################################################
2015-07-17 16:34:26.921  INFO 41111 --- [           main] o.s.jdbc.support.SQLErrorCodesFactory    : SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
2015-07-16 02:30:25.734  INFO 60636 --- [           main] o.s.batch.core.step.tasklet.TaskletStep  : Commit failed while step execution data was already updated. Reverting to old version.

The Log of Execution : 一切都要回滚

+++++++++++++++++++++++++++++++++++++++++++++++++++++ 
Step collectRecordStep 
WriteCount: 0
ReadCount: 14
ReadSkipCount: 0
Commits: 1
SkipCount: 0
Rollbacks: 14
Filter: 0
+++++++++++++++++++++++++++++++++++++++++++++++++++++