首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StaleObjectStateException对OptimisticLockException

StaleObjectStateException对OptimisticLockException
EN

Stack Overflow用户
提问于 2013-08-11 21:35:30
回答 2查看 7.6K关注 0票数 14

当我的应用程序出现乐观的并发问题时,StaleObjectStateException将被抛到我的应用程序中,而不是OptimisticLockException (正如我所看到的,我应该预料到这一次)。不需要发布代码,因为它是最基本的并发问题--时间戳列中错误的版本。

我怎么能得到OptimisticLockException,而不是另一个呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-11 22:52:04

当您使用直接的hibernate API时会引发StaleObjectStateException。如果使用JPA样式hibernate,则会引发OptimisticLockException。如果这让你感到困惑,请阅读:What's the difference between JPA and Hibernate?

使用try catch块捕获异常:

代码语言:javascript
复制
try {
  // your hibernate operation here
} catch (OptimisticLockException e) {
  // do something (eg: inform user update is conflicting)
}

值得注意的是,由于其他事务在您有机会之前更新了对象(因此创建了更新版本),所以出现了OptimisticLockException。在UI应用程序中,通常会提示用户是否覆盖/丢弃/合并其对象的版本。

票数 9
EN

Stack Overflow用户

发布于 2014-02-03 07:59:24

在我对Hibernate 3.5.2 (现在有点老了)的分析中,我发现它们有时抛出OptimisticLockException,有时抛出StaleObjectStateException。批处理操作甚至会抛出StaleStateException,这是StaleObjectStateException的一个超类,但是没有实体实例。

在我看来,这是一个未完成的重构,您可能需要抓住两者,并以相同的方式对两者作出反应。

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

https://stackoverflow.com/questions/18176932

复制
相关文章

相似问题

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