StaleObjectStateException: Zeile wurde aktualisiert oder gelöscht von einem anderen Transaktion?
Ich Folgendes tun:
def currentUser = springSecurityService.currentUser
currentUser.name = "test"
currentUser.save(flush: true)
//some other code
currentUser.gender = "male"
currentUser.save(flush: true) //Exception occurs
Dies ist die exception, die ich bekomme:
ERROR events.PatchedDefaultFlushEventListener - Could not synchronize database state with session
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
Wie kann ich verhindern, dass dieser Fehler? Was ist die beste Lösung für dass?
Fand ich verschiedene Ansätze:
Welche soll ich verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nutzen Zusammenführen - es wird aktualisiert, das Objekt in übereinstimmung mit dem aktuellen Zustand in der Datenbank. Wenn Sie es verwerfen zurückgesetzt wird das Objekt wieder zu dem, was die Datenbank und verwirft alle änderungen. Alles andere in der hibernate-session, die Sie brauchen, sich selbst zu verwalten.
Wichtiger sollten code geschrieben werden, in einem Dienst, so dass es eine Datenbank-Transaktion, und Sie sollten
nur einmal am Ende.