Привет,
надо из таблицы удалить записиси и создать новые, новые могут иметь теже первичные ключи, что и удаляемые. Удаляются по foreign key.
Если делать так, то JPA/hibernet сначала делает запрос к базе данных, потом удаляет записи и для каждой выполняет DELETE FROM. Что не очень оптимально, так как записей может быть много.
rep.deleteAllByForeignKey(forejgnKey);
inputList.forEach(newrec -> repo.save(newrec));
Если же делаю так, то JPA делает сначала запрос к базе данных, потом одним DELETE FROM удаляет все записи, но потом спотыкается на добавлении новых записей
repo.deleteInBatch(repo.findAllByForeignKey(foreignKey));
inputList.forEach(newrec -> repo.save(newrec));
Ошибка выходит типа такой
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
Все в одной транзакции делается, может надо как то сказать hibernate, что "данные удалены, забудь про них?"