首页 > 解决方案 > JTA Requires new 在同一个 Injected 类中不起作用

问题描述

好吧,我有一个由 CDI 注入的类,如下所示:

@Named
@RequestedScoped
public class MyClass{
   @Transactional
   public void start(){
     for(int i = 0; i < 100;i++){
        //do some logic
        forceSave();//should save immediately
      }
   }

   @Transactional(value = Transactional.TxType.REQUIRES_NEW)
   public void forceSave(){

   }
}

不高兴它不起作用。forceSave() 在与 start() 方法相同的事务中工作。我需要创建另一个类,将 forceSave() 放在另一个类中,一切正常,如下所示:

 @Named
    @RequestScoped
    public class MyClass{
       @Inject
       private MyClassTwo two;
       @Transactional
       public void start(){
         for(int i = 0; i < 100;i++){
            //do some logic
            two.forceSave();//should save immediately
          }
       }

    }

@Named
@RequestScoped
public class MyClassTwo{
 @Transactional(value = Transactional.TxType.REQUIRES_NEW)
       public void forceSave(){

       }
}

第二个解决方案工作正常,但非常难看。我需要始终创建另一个类来使用新事务。还有另一种解决方法吗?

标签: javacdijta

解决方案


推荐阅读