我有一个方法使用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。我该怎么办?
答案 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)