org.springframework.transaction.UnexpectedRollbackException: транзакция JTA неожиданно откатилась (возможно, из-за тайм-аута); вложенное исключение

#hibernate

#спящий режим

Вопрос:

У меня есть API с weblayer (контроллером), прикладным и сервисным уровнями. Запуск транзакции на уровне приложения @Transactional (только для чтения = false). При вызове API он добавляет строку (распространение = REQUIRES_NEW) в БД и в конце выполнения обновляет (распространение = REQUIRES_NEW) ту же запись. При обновлении я получаю ошибку сохранения (преднамеренную), которую я улавливаю и преобразую в ответ. После отладки я увидел, что ответ правильно формируется на уровне сервиса и отправляется обратно на уровень приложения. Но при возврате ответа от службы на веб-уровень он выдает «org.springframework.transaction.UnexpectedRollbackException «. пожалуйста, дайте мне знать, если потребуются какие-либо дополнительные данные.

ПРИМЕЧАНИЕ: приложение не имеет никакой реализации, кроме аннотации «@Transactional (только для чтения = false)», я просто возвращаю уровень службы формы ответа на веб-уровень через уровень приложения.

Комментарии:

1. Вы имеете в виду ошибку сохранения, как в javax.persistence.PersistenceException ? Вы перехватываете PersistenceException внутри исходной @Transactional(readOnly = false) транзакции? Если это так, попробуйте перехватить ее внутри транзакции «обновить» и повторно создать другое проверенное исключение

2. @crizzis спасибо за ответ, ранее я перехватывал PersistenceException и выбрасывал его как исключение из режима гибернации, что не сработало. Согласно вашему предложению я перехватил исключение и выдал его как SQLException (проверенное исключение), оно не работает. Все еще можно увидеть необнаруженное исключение отката