Ich habe ein Domänenobjekt, das Ergebnisse einer Berechnung basierend auf Parametern enthält, die Eigenschaften desselben Domänenobjekts sind. Ich möchte sicherstellen, dass alle Zeitparameter vom Benutzer geändert werden, es neu berechnet und ordnungsgemäß in der Datenbank gespeichert wird.Ändern des Objekts in AfterInsert/AfterUpdate
Ich versuche, dies mit AfterInsert (um sicherzustellen, dass die Berechnung in erster Linie korrekt ist) und AfterUpdate.
Da meine Berechnung jedoch versucht, das Objekt selbst zu ändern, funktioniert es nicht - verschiedene Ausnahmen im Ruhezustand werden ausgelöst.
Ich habe versucht, den AfterUpdate-Code in eine Transaktion zu setzen, aber das hat nicht geholfen. Ich fürchte, ich komme hier in eine zirkuläre Abhängigkeitsproblematik.
Die Ausnahme, die ich jetzt bin immer ist:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [esc.scorecard.PropertyScorecard#27]
Sind die GORM Veranstaltungen für einfachere Anwendungsfälle konzipiert? Ich bin versucht zu schließen, dass es nicht der richtige Weg ist, das Objekt zu verändern, in dem man sich gerade befindet.
was mit diesem Problem Abhilfe Ihre ist. Ich stehe auch vor diesem Dilemma. * .withNewSession * scheint nicht für afterInsert zu funktionieren. Ich kann das Objekt weder spülen noch speichern (naja, ich kann .save()) aber es scheint, dass die Berechnungen, die ich im afterInsert gemacht habe, nicht in der Datenbank gespeichert sind, wenn ich einfach .save()) verwende. Vielen Dank! Anyway, was ich nur tun möchte, ist, ein Benutzer-Objekt innerhalb meiner Domain-Klasse (z. B. Nachricht), die es erstellt haben. Da Audit-Trail nur eine Long-Referenz speichert (z. B. createdby), kann ich die Klasse der Nachrichtendomäne möglicherweise nicht manipulieren und schließlich auf ihr Attribut referenzieren –