StaleObjectStateException 或 OptimisticLockingException

StaleObjectStateException or OptimisticLockingException

在哪里可以找到有关在基于版本的乐观锁定保存操作中捕获哪些异常的信息。

"the internet" 上的文本建议任何 Hibernate 自己的或 JPA 的 OptimisticLockingException,但当我这样做时,我看到在我的基于 Hibernate 4.3 会话的应用程序中,这种类型的异常由org.hibernate.StaleObjectStateException.

这些建议的差异让我想知道"real "这样做的方法是什么。

此外,我已经准备好从 Hibernate Session 迁移到 JPA。这个问题(我的)有标准吗?那会是什么?

干杯 垫子

这取决于您要使用的 API。

  1. 如果您使用 JPA 和 EntityManager 接口,那么 Hibernate 将简单地包装所有 [StaleStateException][1](这是 StaleObjectStateException 的基础 class ) 在 javax.persistence.OptimisticLockingException

  2. 如果您通过 Session 界面使用特定于 Hibernate 的 API,那么您将获得 StaleObjectStateException