2013-02-04 10 views
5

Wie lautet die korrekte Möglichkeit, die Transaktion einer Container-verwalteten JTA-Transaktion rückgängig zu machen?Wie Rollback JTA-Transaktion korrekt?

Ich verstehe das: EJBException when calling entityManager.getTransaction() , dass ich die Transaktionsinstanz nicht erhalten kann. Ich lese eine Lösung here, aber ich bin mir nicht sicher, ob das richtig ist.

Ich bin mir auch bewusst, dass, wenn ich eine Ausnahme auslösen, die Transaktion zurückgesetzt wird.

Aber meine Frage ist: Wenn ich einen Container verwalten möchte (müssen) EntityManager verwaltet, was ist der richtige Weg, eine Transaktion innerhalb es zurückzurollen?

Antwort

7

Die asnwer auf-Code Ranch richtig ist, müssen Sie verwenden SessionContext

@Resource 
private SessionContext ctx; 

//and then in method 
if(fail) { 
    ctx.setRollBackOnly(); 
} 

Siehe auch dieses article.