【Spring4】采用注释写法,事务回滚报错问题

有如下代码:

public class Test{  
        @Autowired
        private Dao dao;
        @Autowired
        private Service service;


        @Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
        //入口方法
        public Object testA(List<Map<String, Object>> param) throws Exception {
                return this.testA(param,this.dao);
        }

        @Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
        public Object testA(List<Map<String, Object>> param,Dao targetDao) throws Exception {
                ...
                ...
                //如有异常,正常抛出
                service.testB(param2,targetDao);
        }
        
        @Transactional(propagation = Propagation.REQUIRED, rollbackForClassName = "Exception")
        public void testB(Map<String, Object> param2,Dao targetDao) throws Exception {
                ...
                //此方法内有(rollback-only)
                testC(param3,targetDao);
                //如有异常,正常抛出
                testD(param4,targetDao);
        }
    
    }

其中方法testC由其他人员开发,我去调用,该方法中有一旦遇到执行异常,进行回滚的写法,语句为TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
测试我整个方法时,会抛出异常:
Caused by: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
故想请教一下各位前辈,如何在不能调整testC方法的基础上,处理报错,使得程序可以遇到异常正常回滚?

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题