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

Java 如何从事务性方法调用非事务性方法,java,spring,transactions,Java,Spring,Transactions,我有一个事务性的方法,我有一个非事务性的私有方法,它执行一些数据库更新 我需要从事务性方法调用这个私有方法,但在异常情况下,非事务性方法的更新也会回滚 如何使非事务性方法从私有方法提交更新,因为它是从事务性方法调用的,并且在异常情况下,它的更改也会回滚 @Transactional public Result createTransaction(){ try{ //do someting }Catch (Exception e){ mark

我有一个事务性的方法,我有一个非事务性的私有方法,它执行一些数据库更新

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

如何使非事务性方法从私有方法提交更新,因为它是从事务性方法调用的,并且在异常情况下,它的更改也会回滚

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


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

只是把答案贴出来以防万一有人需要,需要注意的重要一点是,需要从非事务性方法调用的事务性方法应该在单独的Springbean中,如所述,因为spring与代理一起工作以实现此行为,并且必须在另一个类中定义该方法,以便spring能够触发事务。一旦你进入一个类,你就不会再通过代理了

需要从非事务性方法调用的事务性方法应该在单独的SpringBean中

对不起,那么你的问题是?看起来在执行ctrl+z时我删除了这个问题,所以我添加了backmarkAsFailed应该是一个事务性方法,在另一个bean中,使用需要新的传播。否则,它所做的一切都是createTransaction()启动的事务的一部分。非常感谢,这对我帮助很大!