Spring Batch SkipListener onSkipInWrite не возвращает только один элемент с OracleJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Batch SkipListener onSkipInWrite не возвращает только один элемент с Oracle

Сообщение Anonymous »

Доброе утро.
У меня есть Spring Batch Job с одним шагом и SkipListener.
Проблема это когда ItemWriter вставляет записи по частям в базу данных Oracle с ошибкой при одной вставке (например, ошибка ограничения целостности). Затем метод OnWriteInSkip в SkipListener вызывается несколько раз с несколькими ошибками вставки, а не только один раз с ошибкой вставки. В таблице в базе данных Oracle все в порядке, пропущена только одна запись, та, что содержит ошибку.
Пример:
Первый вариант использования:
ItemWriter вставляет первичные ключи 1, 2, 3, 4, 5, 6, 7, 7< /strong>, 8, 9 в таблица в базе данных Oracle (первичный ключ 7 вставлен дважды)
=> OnWriteInSkip в SkipListener вызывается для 7, 2, 3, 4, 9, и в базе данных пропускается только первичный ключ 7
Второй вариант использования:
ItemWriter вставляет первичные ключи 1, 2, 3, 4, 5, 6, 7, 8, 9 в таблице в базе данных Oracle
=> OnWriteInSkip в SkipListener не вызывается и ни одна запись не пропускается в базе данных, как предполагалось.
Среда: Spring Boot 3.3.6, Spring Batch 5.1.2, Oracle 21
Job

Код: Выделить всё

return new StepBuilder("customStep", jobRepository)
. chunk(400, transactionManager)
.reader(reader)
.processor(processor)
.writer(writer)
.faultTolerant()
.skip(Exception.class)
.skipLimit(1000)
.listener(skipListener)
.build();
SkipListener — классический с логгером в методе OnWriteInSkip
Буду рад пониманию и решение этой проблемы. Я попробовал несколько исправлений, но безуспешно. Кто-нибудь сталкивался с этой проблемой или есть решение для ее решения? Спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... with-oracl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»