2

我有一个使用 DeltaSpike 的 @Transactional 的方法,但是在这个方法中我需要调用 save() 并强制提交,与之后的任何异常无关。如果我使用保存并在强制执行后 DeltaSpike 回滚所有内容,如下所示:

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

所以我的想法是调用另一种方法来用另一个事务保存我的 bean,如下所示:

    @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 和任何其他属性来创建新的事务。我该怎么做 ?

4

1 回答 1

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)

于 2017-02-14T14:41:41.797 回答