首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从StaleObjectStateException中恢复

从StaleObjectStateException中恢复
EN

Stack Overflow用户
提问于 2012-06-21 11:29:06
回答 1查看 432关注 0票数 0

在这种情况下,线程可以从db检索对象,并对其进行编辑。在刷新对象时,我会得到一个StaleObjectStateException,因为在此期间,另一个线程已经编辑了相同的对象(我使用乐观锁定)。我明白为什么会发生这种情况,但我不能改变这种行为。

因此,我试图做的是再次从db检索对象,并在最新版本上重新应用更改,但是我在做检索之前就得到了另一个 StaleObjectStateException,为什么会这样呢?

代码语言:javascript
复制
try{
    songs = nextSongGroup.getSongs(session);
    modifySongs(songs);
    session.flush();
}
catch(StaleObjectStateException sobe){
     songs = nextSongGroup.getSongs(session);
     modifySongs(songs);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-21 11:35:23

如果你有这个例外,已经太迟了。你需要扔掉这段时间,换个新的。对同一会话的任何查询都将导致相同的异常。

理论上,调用em.clear();并重新运行相同的查询可能会有所帮助。不过我从来没试过这个。

对我来说,我通常向用户提供一个Oops页面,其中有一个retry按钮,在干净的会话中再次运行他的请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11137173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档