Spring + Hibernate: откат всего, кроме одного стола - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть контроллер Spring, работа которого состоит в том, чтобы получить некоторую информацию из db + и обновить некоторые записи внутренней базы данных.

Помимо прочего, контроллер связывается с некоторыми сторонними сервисами, которым требуются маркеры доступа OAuth.У меня есть токен обновления и токен доступа, и всякий раз, когда срок действия токена истекает, я использую другую стороннюю службу для обновления токенов с помощью маркера обновления.Последние токены хранятся в базе данных и используются в следующих запросах.

Теперь, когда во время потока возникает исключение RuntimeException, вся транзакция откатывается.Проблема в том, что также токены, которые сохраняются в базе данных, откатываются.Так что в конечном итоге у меня нет информации о новых токенах, которые я получил, но старые токены становятся недействительными, как только я запрашиваю новые.

Небольшая иллюстрация: enter image description here

Моя цель - откатить все, кроме части, включающей сохранение токена.

В настоящее время я чрезвычайно осторожен, чтобы перехватить все исключения RuntimeException (поскольку проверенные исключения не вызывают откат по умолчанию).Это довольно хлопотно и, похоже, не лучший подход.

Пожалуйста, не обращайте особого внимания на токены и особенности потока аутентификации.Они были просто использованы для иллюстрации ситуации.

...