我在我的项目中使用Spring(3.2.4.RELEASE)和Hibernate(4.2.8.Final),并使用JPA配置。Spring,JPA,Hibernate 3和4
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
...
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
...
</bean>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
而且我使用hibernate乐观锁定版本控制机制,如下所示。
@Entity
public class Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Version
@Generated(GenerationTime.ALWAYS)
private int version;
}
我的问题是,当我用错了版本更新的实体,它为什么扔
org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException
不
org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException
?
其实这两个都很奇怪......我期待'JpaOptimisticLockingFailureException'或'ObjectOptimisticLockingFailureException'。当使用hibernate而不是jpa时应该抛出特定的'HibernateOptimisticLockingFailureException'。你不是偶然在你的上下文中有一个明确配置的'HibernateExceptionTranslator'? –