Spring + Hibernate:回滚除一张表外的所有内容

时间:2019-02-08 20:25:19

标签: java database spring hibernate transactions

我有一个Spring控制器,它的工作是从db获取一些信息,并更新一些内部数据库条目。

除其他事项外,控制器与一些需要OAuth访问令牌的第三方服务进行通信。我有刷新令牌和访问令牌,并且每当访问令牌过期时,我都会使用另一个第三方服务使用刷新令牌来刷新令牌。最新的令牌存储在数据库中,并在下一个请求中使用。

现在,只要流程中出现RuntimeException,就会回滚整个事务。问题在于,还会回滚保存到数据库的令牌。因此,最终我没有关于收到的新令牌的信息,但是旧令牌在我请求新令牌时就失效了。

一个小例子: enter image description here

我的目标是回滚除包含令牌保存部分以外的所有内容。

当前,我非常小心地捕获所有RuntimeExceptions(因为Checked异常默认情况下不会导致回滚)。不过,这很麻烦,而且似乎也不是最好的方法。

请不要过多注意令牌和身份验证流程的细节。这些只是用来说明情况。

0 个答案:

没有答案