【问题标题】:Commit failed while step execution data was already updated已更新步骤执行数据时提交失败
【发布时间】:2016-04-26 10:29:06
【问题描述】:

当 Spring Batch 尝试提交记录时,我收到 Commit failed while step execution data has been updated 错误。任何帮助将不胜感激。 我正在使用 HIbernate JPA。

它适用于较少数量的记录。记录数高时抛出错误。

堆栈跟踪:

2016-01-20 08:49:45 INFO  TaskletStep:359 - Commit failed while step execution data was already updated. Reverting to old version.
2016-01-20 08:49:45 ERROR TaskletStep:370 - Rolling back with transaction in unknown state
2016-01-20 08:49:45 ERROR AbstractStep:225 - Encountered an error executing  step uploadFiles in job fileUploadJob
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException:  Transaction marked as rollbackOnly
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:524)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726)

【问题讨论】:

  • 你有没有用@Transactional 标记的组件?通常是交易问题的根源
  • 感谢您的回复。我的代码中的任何地方都没有@Transactional。当我将提交间隔设置为 1 时它正在工作。如果我设置为 100 或 1000 或 10000 则失败。

标签: java jpa spring-boot spring-batch


【解决方案1】:

我有同样的错误“提交失败,而步骤执行数据已经更新。恢复到旧版本”,我通过在提交记录的方法上方使用“@Transactional(propagation = Propagation.REQUIRES_NEW)”注释解决了这个问题。

【讨论】:

    猜你喜欢
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2020-11-28
    • 2019-07-11
    相关资源
    最近更新 更多