In einem Federbehälter mit dem folgenden Code:
%Vor% wann genau die Transaktion, die für m2()
erstellt wurde, festgeschrieben wird? sobald der Aufruf von m2()
endet oder wenn% cop_de% Aufruf endet?
Wann begeht @TransactionAttribute (TransactionAttributeType.REQUIRES_NEW)? beantwortet es für EJB, aber es scheint nicht das gleiche Verhalten für JPA zu sein.
Ich habe es debuggt und ich kann nur den Effekt von m1()
auf DB sehen, nachdem m2()
endet, aber das scheint mir seltsam, fehlt mir hier etwas?
UPDATE:
Ich habe die Entity, die ich in m1()
gefunden habe, an m1()
übergeben und von dort aus aktualisiert.
Das Zusammenführen der Entität in m2()
löst das also und die Mik378 Antwort ist korrekt.
Von hier :
Ob Sie das Spring Framework oder EJB verwenden, verwenden Sie die Das Transaktionsattribut REQUIRES_NEW kann negative Ergebnisse haben und führen korrupte und inkonsistente Daten.
Die REQUIRES_NEW-Transaktion Attribut startet immer eine neue Transaktion, wenn die Methode gestartet wird, ob eine vorhandene Transaktion vorhanden ist oder nicht.
REQUIRES_NEW
startet eine neue Transaktion, auch wenn eine bestehende Transaktion im Kontext existiert.
Die kurze Antwort ist also: sobald der Aufruf von m2()
endet