org.springframework.transaction.UnexpectedRollbackException: транзакция автоматически откатывается, потому что она была помечена как только для отката
В основном это происходит, если у вас внешний @Transactional
метод вызываетвнутренний @Transactional
метод.Когда внутренний метод выдает исключение, но внешний метод перехватывает это исключение и возвращает его нормально, Spring запутывается и не знает, следует ли ему откатить или зафиксировать транзакцию, поскольку оба метода противоречат друг другу.(Внутренний метод говорит, что хочет откат, но внешний метод говорит, что он хочет зафиксировать)
Итак, проверьте, существуют ли внешние @Transactional
методы, которые перехватывают исключение.Если да, повторно сгенерируйте это исключение из внешнего метода, чтобы выполнить откат всей транзакции.