![](/img/trans.png)
[英]JPA / Hibernate Spring @Transactional vs. JOIN FETCH
[英]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.