深入分析rollback-only问题

在写事务的时候经常会用到隐式事务@Transactional。具体事务内的几个常定义这里就不细说了。。只说下报以下异常:

 造成该异常的方式网上说的很多。。我这里只给个例子:

有这么三个方法 service0.test、service.testA、service.testB(注:spring的事务生效是通过AOP动态代理切面生成的。故这里这三个方法的调用必需要通过方法调用,不可内部直接调用)

具体实现如下:

//=====类A的方法 
  @Transactional
    public String test(String value){
        service.testA(value);
        try {
            service.testB(value);
        } catch (Exception e) {
            logger.info("输出个日志"); } return "成功"; }

//=======以下为类B里的两个方法

@Transactional
@Override
public void testA(String value) {
Task task = dao.findByPrimaryKey(1L);
task.setValue(value);
dao.updateByPrimaryKey(task);
}
@Transactional
@Override
public void testB(String value) {
throw new RuntimeException("报个错, value:"+value);
}



猜你喜欢

转载自www.cnblogs.com/tywei/p/12758847.html