【问题标题】:@Transactional(rollbackfor=Exception.class) for two daoimpl class@Transactional(rollbackfor=Exception.class) 用于两个 daoimpl 类
【发布时间】:2011-12-04 17:41:19
【问题描述】:

在我的项目中,我使用了两个事务类。每个类都包含保存方法。当我将@Transactional(roolbackFor=Exception.class) 注释添加到这些类中时,用于类似

@Component
public class CallerClass{
@Autowired    
private TransactionClass1 class1;
@Autowired    
private TransactionClass2 class2;

public void saveOperation(){    
    try{
        class1.save();
        class2.save();
    }catch(Exception ex){
    }
}
}

如果 class1.save 方法在没有异常的情况下执行,但 class2.save 方法抛出异常,那么 class1.save 操作回滚?

【问题讨论】:

    标签: java hibernate spring


    【解决方案1】:

    没有。

    要具有这种行为,包含这两个调用的方法也必须是事务性的。此外,如果您使用new 实例化您的类,则不会使用事务拦截器。您必须从应用程序连接或(最好)通过依赖注入获取这些类的实例。

    【讨论】:

    • @Autowired 其实这两个对象
    【解决方案2】:

    如果你没有任何@Transactional注解的方法,包含save()的调用,比如果class2.save()有异常,class1.save()不应该回滚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2012-10-01
      • 2020-12-11
      相关资源
      最近更新 更多