2017-12-22 2 views

Antwort

0

Nein. Das ist nicht möglich, und zwar aus sehr guten Gründen.

Wenn Sie eine Ausnahme beim Löschen des JPA- und Hibernate-Persistenzkontexts erhalten, ist nicht klar, wie viele Entitätsstatusübergänge synchronisiert wurden und welche Statusübergänge überhaupt nicht gelöscht wurden.

Genau wie ein ACID transaction should be atomic, sollte die JPA Unit of Work (Persistence Context) ebenfalls atomar sein.

Versuchen, dieses Verhalten zu brechen, ist ein Datenzugriff Design Smell und tels Sie, dass es eine bessere Lösung für das ursprüngliche Problem, das Sie zu dieser Frage geführt hat.

+0

Ist es besser, den Transaktionsmanager die Transaktion zurücksetzen zu lassen und einen Datensatz in eine andere Tabelle für Audit Trail einzufügen? –

+0

Nun, die zurückrollende Transaktion bedeutet, dass kein Eintrag im Redo-Log der Datenbank vorhanden sein wird. Daher sollte das Audit-Log keine nicht vorhandenen Datenbankänderungen kennzeichnen. Wenn Sie jedoch Event Sourcing verwenden müssen, können Sie alle Befehle protokollieren, unabhängig davon, ob sie erfolgreich oder fehlgeschlagen sind. Dafür müssen Sie eine separate Transaktion verwenden, bevor Sie die mit JPA und Hibernate öffnen. –

+0

Gibt es ein JTA-Äquivalent der Propagierung - requires_new oder wie kann es programmgesteuert erfolgen? –

Verwandte Themen