2017-02-13 1 views
2

Ich habe eine Methode mit einem @ Transactional von DeltaSpike, aber innerhalb dieser Methode muss ich eine save() aufrufen und Commit, unabhängig von einer Ausnahme nach. Wenn ich speichern und nach der Kraft einer expcetion verwenden Rollback der DeltaSpike alles, wie folgt aus:Force neue Transacion in DeltaSpike

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

Also meine ideia ist eine andere Methode aufrufen, um meine Bohne mit einem anderen transacion, wie dies zu sparen:

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

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

Aber DeltaSpike hat kein Attribut REQUIRES_NEW und kein anderes um eine neue Transaktion zu erstellen. Wie kann ich es tun ?

Antwort

0

Ich glaube, es gibt keinen Weg. Verwenden Sie JTA 1.2 (Teil von Java EE 7)? So können Sie @javax.transaction.Transactional verwenden. Es funktioniert auch mit DeltaSpike. Versuchen

... 
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

Ich bin nicht JTA verwenden, nur CDI mit DeltaSpike. – RonaldoLanhellas

+0

Java EE 7 oder Feder? Die jta-Abhängigkeit gehört mehr zu jpa. – jklee

+0

Java EE 7, verwende ich nicht Spring. – RonaldoLanhellas