Hallo zusammen,
Ich habe derzeit ein Problem mit dem Optimistic Locking von JPA (Hibernate als EntityManager). Meine Tabelle hat eine @Version-Spalte anhand derer sich Hibernate ermittelt, ob eine konkurrierende Änderung stattfand. So weit so gut. Auf diesen Daten gibt es auch keinen Hintergrundprozess, der eventuell eine Änderung machen könnte (nur um dies vorab auszuschließen). Es existiert derzeit kein konkurrierender Zugriff, da ich der einzige Tester bin.
Nun ist es aber so, dass wenn ich einen Datensatz ändere und speichere, diese @Version-Spalte automatisch vom EntityManager aktualisiert wird. Nach der Änderung habe ich dann (nicht immer aber oft) eine minimale Differenz zwischen dem Wert der @Version-Spalte im RAM und in der Datenbank. Das sind nur 1 oder 2 Millisekunden, aber das reicht natürlich um beim nächsten Speichern eine OptimisticLockException auszulösen. Daher vermute ich hier einen Fehler.
Kann mir jemand dazu etwas sagen?
Vielen Dank für jeden Hinweis.
Sebastian
Ich habe derzeit ein Problem mit dem Optimistic Locking von JPA (Hibernate als EntityManager). Meine Tabelle hat eine @Version-Spalte anhand derer sich Hibernate ermittelt, ob eine konkurrierende Änderung stattfand. So weit so gut. Auf diesen Daten gibt es auch keinen Hintergrundprozess, der eventuell eine Änderung machen könnte (nur um dies vorab auszuschließen). Es existiert derzeit kein konkurrierender Zugriff, da ich der einzige Tester bin.
Nun ist es aber so, dass wenn ich einen Datensatz ändere und speichere, diese @Version-Spalte automatisch vom EntityManager aktualisiert wird. Nach der Änderung habe ich dann (nicht immer aber oft) eine minimale Differenz zwischen dem Wert der @Version-Spalte im RAM und in der Datenbank. Das sind nur 1 oder 2 Millisekunden, aber das reicht natürlich um beim nächsten Speichern eine OptimisticLockException auszulösen. Daher vermute ich hier einen Fehler.
Kann mir jemand dazu etwas sagen?
Vielen Dank für jeden Hinweis.
Sebastian