在DeltaSpike强制新的Transacion

时间:2017-02-13 16:36:44

标签: java deltaspike

我有一个方法使用DeltaSpike的@Transactional,但在这个方法中我需要调用save()并强制提交,而不管之后的任何异常。如果我使用save并在强制进行expcetion后,DeltaSpike会回滚所有内容,如下所示:

@Transacional
public void method(){
save(myBean);
throw new MyException("THIS IS NECESSARY");
}

所以我的意思是调用另一种方法来保存我的bean另一个transacion,像这样:

    @Transacional
    public void method(){
    save(myBean);
    throw new MyException("THIS IS NECESSARY");
    }

    @Transacional(REQUIRES_NEW)
   public void saveHere(Object bean){save(bean);}

但DeltaSpike没有属性REQUIRES_NEW和其他任何创建新的transacion。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我相信没有办法。 您使用JTA 1.2(Java EE 7的一部分)吗?所以你可以使用@javax.transaction.Transactional。它也适用于DeltaSpike。

...
public @interface Transactional {
...

    TxType value() default TxType.REQUIRED;

    public enum TxType {
        REQUIRED,
        REQUIRES_NEW,
        MANDATORY,
        SUPPORTS,
        NOT_SUPPORTED,
        NEVER
    }
}

尝试@javax.transaction.Transactional(value=TxType.REQUIRES_NEW)