繁体   English   中英

春季,JPA,休眠3 vs 4

[英]Spring, JPA, Hibernate 3 vs 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>

而且我使用如下所示的休眠乐观锁定版本控制机制。

@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。*的软件包。

因此,即使您在使用spring数据jpa时在项目库中有hibernate-4.2.8.Final.jar,在任何错误的DB操作上都会将所有已检查的异常转换为unchecked(运行时)hibernate异常,从组织使用HibernateExceptionTranslator .springframework.orm.hibernate4.HibernateExceptionTranslator。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM