Hallo,
ich habe ein Entity mit einem uniqueConstraint definiert. Diese Tabelle wird über einen Dialog gepflegt. Dabei habe ich aber nun folgende Frage:
Wenn der Benutzer die Daten so eingibt, das der uniqueConstraint auf einen Fehler läuft (oder evtl. auch ein anderer CheckConstraint), bekomme ich von Hibernate eine javax.persistence.RollbackException zurück. Dadurch wird die aktuelle Transaktion ja zurück gesetzt.
Ich mache eine neue Transaktion auf, das Entity befindet sich noch im EntityManager (sonst würde ich einen merge machen) ändere die Felder des unique constraint und versuche danach erneut ein persist und commit.
Komischerweise bekomme ich nun wieder die gleiche Exception zurück wie beim ersten Mal, es werden sogar die Felder des uniqueConstraints ausgegeben, allerdings mit den Werten vor meiner Änderung.
... was mache ich falsch? ...
Sollte ich das Entity vor dem Verändern der Daten detachen und danach mergen? Irgendwie scheint mir der Status des Entity auch nicht ganz korrekt zu sein, da eine @PreUpdate annotierte Methode durchlaufen wird.
Für eine Hilfestellung wäre ich dankbar.
Viele Grüße, Susanne.
|