在使用spring做事务管理时,很多人都会遇到这样一段异常: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(Abstr…
spring的声明事务提供了强大功能,让我们把业务关注和非业务关注的东西又分离开了.好东西的使用,总是需要有代价的.使用声明事务的时候,一 个不小心经常会碰到“Transaction rolled back because it has been marked as rollback-only”这个异常.有时候又常常会纳闷,"我已经try-catch了,为什么还这样呢?" <!-- 0 placeHolder --> <bean  class="org.sp…
出现这种错误的原因 1.接口A 调用了接口B 2.接口B报异常了,没有在B里面进行try catch捕获 3.接口A对 接口B进行了try catch捕获 因为接口B报异常 会把当前事物A接口的事物(如果B没有开启新的事物) 标志成rollback-only 然后因为接口A对B进行了try catch 所以接口A会一直往下走,等接口结束commit的时候会报错 org.springframework.transaction.UnexpectedRollbackException: Transac…
1. Transaction rolled back because it has been marked as rollback-only事务已回滚,因为它被标记成了只回滚<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>query开头的方法readOnly,所以只能select,抛出异常,insert/update/delete操作必然回滚 2. 发现selectA调用selectB,如果selec…
问题: 一个ajax请求,发生系统错误,错误内容:Transaction rolled back because it has been marked as rollback-only 原因是调用的service是一个事务,这个方法里面调用其他方法有异常.…
原文地址:https://blog.csdn.net/f641385712/article/details/80445912 1.概述 想必大家一想到事务,就想到ACID,或者也会想到CAP.但笔者今天不讨论这个,哈哈~本文将从应用层面稍带一点源码,来解释一下我们平时使用事务遇到的一个问题但让很多人又很棘手的问题:Transaction rolled back because it has been marked as rollback-only,中文翻译为:事务已回滚,因为它被标记成了只回滚.…
产生原因  , 1 serviceA 调用 serviceB 然后 B  抛出异常 ,B 所在的 事物 回滚,B 把当前可写 事物标记成 只读事物 , 2 如果 A 和B 是在 同一个事物环境,并且 A 抓了 B 抛出的异常,没有和 B 一起回滚, 3 然后 A 方法 完成,把当前事物 当成 写事物提交.就会出上面的问题. 上代码: 解释: 可以看出  上面代码 问题有点多, 方法 A  是 没有 事物环境的,也就是说 调用方法A 的 前面的方法如果有事物环境, 方法A 就 依赖前面的事物环境,…
转载https://blog.csdn.net/f641385712/article/details/80445912 读了两边才找到问题…
@Transactional(rollbackFor = Exception.class) @Overridepublic DubboResult<Boolean> productAddOrModify(MallProductAddModifyReq req) { log.info("权益商城商品添加,请求参数={}", req); try { boolean resutl1 = productService.handleIntegralProduct(req); bool…
很多朋友在使用spring+hibernate或mybatis等框架时经常遇到报Transaction rolled back because it has been marked as rollback-only的异常,这个异常是怎么造成的 呢,下面将给大家进行详细的分析.     这是专门写的一个造成该异常的代码: @Transactional public void add(OperateLog entity)throws Exception { // TODO Auto-generate…