java事务嵌套

发布于 2022-09-13 00:58:50 字数 1078 浏览 27 评论 0

方法A:

classA

@Override
@Transactional(propagation = Propagation.REQUIRED)
public void testA(Student student) {
  ......
  try {
             classB.testB(student);
            } catch (CustomException e) {
                log.warn("失败,原因:" + e.getMessage());
                
            } catch (ParamException e) {
                log.warn("失败,原因:" + e.getMessage());
                
            } catch (Exception e) {
                log.error("失败,原因:" + e.getMessage(), e);
            }
}

classB

@Override
@Transactional(rollbackFor=Exception.class,propagation=Propagation.REQUIRES_NEW)

public void testB(Student student) {
   try{
   ......
   } catch (CustomException e) {
        throw e;
    } catch (ParamException e) {
        throw e;
    } catch (Exception e) {
        log.error("出错:" + e.getMessage(), e);
    }  

}
问题:
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
该问题偶发,什么情况下会抛出此异常?求解

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅紫色的梦幻 2022-09-20 00:58:50

一般是事务嵌套的问题,就你现在的代码,一般不会出现这个问题的
image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文