產生擰例外,但如果是在樂觀鎖失敗我希望JPA實體管理器拋出javax.persistence.OptimisticLockingException春天JPA提供商的樂觀鎖失敗
然而,當我使用ORM春天JPA提供ObjectOptimisticLockingException這是不與預期相關 - 所以問題是,WTF?我是否誤解JPA文檔,還是春天的人忽略了standarts?
最有趣的是,在JUnit測試用例中引發了適當的異常(包裝StaleObjectException), 而在Web應用程序中它是FUBAR。 Spring配置被重用於單元測試。
下面是清晰一些代碼:
<!-- JPA entity manager configuration -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
<property name="testOnBorrow" value="${database.testonborrow}"/>
<property name="validationQuery" value="${database.validationquery}"/>
</bean>
<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="defaultDataSource" ref="dataSource"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="persistenceUnitManager"/>
<property name="persistenceUnitName" value="provisioning"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true"/>
</bean>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.dialect" value="${hibernate.dialect}"/>
<entry key="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl.auto}" />
<entry key="hibernate.hbm2ddl.delimiter.type" value="InnoDB" />
<entry key="hibernate.show_sql" value="${hibernate.show_sql}" />
</map>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<context:annotation-config/>
<tx:annotation-driven/>
有趣的是,我使用JPA,我得到JPA實體管理器,並希望得到JPA確認例外。我完全知道封面下面有hibernate,但是DI的整個意義在於不關心JPA,甚至在代碼中彈出。 –