Spring,JPA,Hibernate 3和4

我在我的项目中使用Spring(3.2.4.RELEASE)和Hibernate(4.2.8.Final),并使用JPA配置。

<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


spring-orm-3.2.4.RELEASE包含org.springframework.orm.hibernate3。*和org.springframework.orm.hibernate4。*的包。

因此,即使您在项目库中使用hibernate-4.2.8.Final.jar,当您使用弹簧数据jpa时,也可以在任何错误的DB操作上将所有检查的异常转换为未经检查的(运行时)hibernate异常。HibernateExceptionTranslator用于org .springframework.orm.hibernate4.HibernateExceptionTranslator。

如果您希望使用3.0,请确保您在bean配置xml文件中使用了org.springframework.orm.hibernate3.HibernateExceptionTranslator。

链接地址: http://www.djcxy.com/p/89593.html

上一篇: Spring, JPA, Hibernate 3 vs 4

下一篇: Spring Data Rest