Transaction rolled back because it has been marked as rollback-only
沽源网站建设公司成都创新互联,沽源网站设计制作,有大型网站制作公司丰富经验。已为沽源千余家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的沽源做网站的公司定做!在使用事务的时候,代码里会爆出上面的错误
什么原因呢?
方法A调用了方法B。
且方法A和方法B上都启动了事务。(都标注了@Transactional)
方法B抛出了异常。
方法A收到B的异常后直接吃掉了,没有继续抛出。
问题就出现在异常上
在上面的默认情况下,Spring 是让方法AB 公用一个事务。
但是Spring 已经感知到了方法B的异常,然后在方法A里面,代码逻辑吃掉了异常,当A结束的时候,Spring并没有感知到A的异常,就准备提交事务。这就冲突了。
从A上说方法一切正常,可以提交!
从B上说已经抛出了异常,得回滚!
知道了原因,解决这个异常那就简单了
那还有一个问题,如果就按照最原始的写法,抛出了Transaction rolled back because it has been marked as rollback-only这个异常,那整个事务到底是什么情况呢?是回滚了,还是正常提交了?
答案是回滚了!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款