如何从Transactional方法调用非事务性方法

时间:2015-07-31 21:04:49

标签: java spring transactions

我有一个Transactional的方法,我有一个非事务性的私有方法,可以进行一些db更新。

我需要从事务方法中调用此私有方法,但是在异常的情况下,非事务性的更新也会回滚。

如何使非事务方法从私有方法提交更新,因为它是从事务方法调用的,如果异常,它的更改也会回滚

@Transactional
public Result createTransaction(){
    try{
         //do someting
      }Catch (Exception e){
         markAsFailed();
         throw new CtxException("customer.notfound");
       }
}


 private void markAsFailed(){
        //do db update
       }

2 个答案:

答案 0 :(得分:1)

如果有人需要,只需提出答案,需要注意的重点是需要从非事务方法调用的事务方法应该在JB Nizet提到的单独的spring bean中,因为spring工作原理使用代理来实现此行为,并且必须在另一个类中定义该方法,以便spring能够触发事务。一旦你进入课堂,你就不会再次通过代理了

答案 1 :(得分:0)

需要从非Transactional方法调用的事务方法应该在单独的spring bean