Как избежать org.springframework.transaction.UnexpectedRollbackException? - PullRequest
1 голос
/ 28 мая 2019

Когда метод аннотируется с помощью @Transactional и возникает исключение времени выполнения, spring сгружает исключение и выдает:

org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only

Как мне избежать этого "общего" исключения и распространить исходное исключение, но сохраняя откат?

Спасибо.

1 Ответ

1 голос
/ 29 мая 2019

org.springframework.transaction.UnexpectedRollbackException: транзакция автоматически откатывается, потому что она была помечена как только для отката

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

Итак, проверьте, существуют ли внешние @Transactional методы, которые перехватывают исключение.Если да, повторно сгенерируйте это исключение из внешнего метода, чтобы выполнить откат всей транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...