2017-02-13 5 views
2

У меня есть метод, использующий @Transactional by DeltaSpike, но внутри этого метода мне нужно вызвать функцию save() и force commit, независимо от любого исключения после. Если я использую сохранить и после того, как силы в expcetion DeltaSpike откатить все, как это:Force new Transacion в DeltaSpike

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

Так что мой Ideia это вызов другой метод, чтобы спасти мою фасоль с другим 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 и любого другого, чтобы создать новую транзакцию. Как мне это сделать ?

ответ

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)

+0

Я не используя JTA, просто CDI с DeltaSpike. – RonaldoLanhellas

+0

Java EE 7 или весна? Зависимость jta принадлежит More to jpa. – jklee

+0

Java EE 7, я не использую Spring. – RonaldoLanhellas

Смежные вопросы