我在我的項目中使用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'? –