当前位置: 首页> 游戏> 手游 > 电子商务网站建设的目的是开展网络营销_张家港设计网站_推广服务公司_友情链接网站源码

电子商务网站建设的目的是开展网络营销_张家港设计网站_推广服务公司_友情链接网站源码

时间:2025/7/11 8:45:15来源:https://blog.csdn.net/shuair/article/details/142994440 浏览次数:0次
电子商务网站建设的目的是开展网络营销_张家港设计网站_推广服务公司_友情链接网站源码

Transaction rolled back because it has been marked as rollback-only异常产生的原因

文档

  1. Spring事务传播行为的七种类型
  2. Transaction rolled back because it has been marked as rollback-only异常产生的原因

产生原因

在Spring事务传播行为中,如果当前存在事务,PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY这三种事务传播类型会加入到当前事务,加入到当前事务表示:与当前事务同时提交或回滚

如果内层方法抛出异常,整体事务就会被标记为回滚,但是如果此时外层方法捕获内层方法抛出的异常,外层方法又无其它异常,外层方法则会继续执行到结束。此时仍然会做回滚操作,并且会抛出异常:org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only

场景复现

PropagationServiceAImpl.java类的requiredToRequired1方法,事务传播类型为REQUIRED

PropagationServiceBImpl.java类的required方法,事务传播类型为REQUIRED

required方法存在异常

requiredToRequired1调用required方法,并捕获异常,此外,requiredToRequired1无其它异常

  • PropagationServiceAImpl.java

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void requiredToRequired1() {update1();try {propagationServiceB.required();} catch (Exception e) {e.printStackTrace();}
    }
    
  • PropagationServiceBImpl.java

    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void required() {update3();int i = 1 / 0;
    }
    
  • 此时,update1、update3均会回滚,并且会抛出org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only异常

  • 如果PropagationServiceAImpl.java类的requiredToRequired1方法有其它的异常抛出,将不会产生上述异常

如有错误,欢迎指正!

关键字:电子商务网站建设的目的是开展网络营销_张家港设计网站_推广服务公司_友情链接网站源码

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: