我有一种情况,一个线程可以从数据库中检索一个对象,并对其进行编辑,当刷新它时,我得到一个StaleObjectStateException,因为与此同时另一个线程已经编辑了同一个对象(我使用乐观锁定)。我可以明白为什么会这样,但我无法改变这种行为。
所以我尝试做的是再次从数据库中检索对象并在最新版本上重新应用更改,但是在我什至更改任何内容之前进行检索后,我就会得到另一个StaleObjectStateException,这是为什么呢?
try{
songs = nextSongGroup.getSongs(session);
modifySongs(songs);
session.flush();
}
catch(StaleObjectStateException sobe){
songs = nextSongGroup.getSongs(session);
modifySongs(songs);
}