在我的项目中配置如下:
<batch:no-rollback-exception-classes>
<batch:include class="java.sql.SQLException"/>
<batch:include class="org.springframework.dao.DuplicateKeyException"/>
<batch:include class="java.sql.SQLIntegrityConstraintViolationException"/>
</batch:no-rollback-exception-classes>加载文件时,我有重复的记录,但由于我在no-rollback-exception-classes下配置了org.springframework.dao.DuplicateKeyException,Spring batch应该不会回滚记录,但记录仍然会回滚。如果我从列表中删除DuplicateKeyException,那么它将抛出异常。我们使用的是Spring batch版本:3.0.7.RELEASE
<batch:no-rollback-exception-classes>
<batch:include class="java.sql.SQLException"/>
<batch:include class="org.springframework.dao.DuplicateKeyException"/>
<batch:include class="java.sql.SQLIntegrityConstraintViolationException"/>
</batch:no-rollback-exception-classes>预计不会回滚记录,但会回滚记录。
发布于 2019-02-11 19:51:08
根据您的配置,当抛出DuplicateKeyException时,Spring Batch仍将尝试提交事务(无回滚),但由于该异常,此提交无论如何都会失败。Spring Batch不能强制数据库提交具有重复键或违反完整性约束的记录。
在将重复项目发送到编写器之前,您需要使用ItemProcessor过滤掉重复项目。
https://stackoverflow.com/questions/54628388
复制相似问题