Пружина откатывает вкладыши

Настроил ниже в моем проекте:

<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>

При загрузке файла, у меня есть дубликаты записей, но так как я настроил org.springframework.dao.DuplicateKeyException под no-rollback-exception-classes, Spring batch не должен откатывать записи, но записи все же откатываются. Если я удалю DuplicateKeyException из списка, то это исключение. Мы используем пакетную версию Spring: 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>

Записи не подлежат откату, но записи откатываются.

1 ответ

Согласно вашей конфигурации, когда DuplicateKeyException Spring Batch по-прежнему будет пытаться зафиксировать транзакцию (без отката), но эта фиксация все равно будет неудачной из-за этого исключения. Spring Batch не может заставить базу данных фиксировать записи с дублирующимися ключами или нарушая ограничения целостности.

Вам необходимо отфильтровать повторяющиеся элементы с ItemProcessor перед отправкой их писателю.

Другие вопросы по тегам