1
我有一個小的spring3/Hibernate JPA應用程序正在運行,並且在嘗試使用事務註釋時遇到了裁剪。基本上它們被TransactionManager忽略。JPATransactionManager和註解驅動事務
我有一個保存方法,我已經修改以強調事務屬性readOnly被忽略。基本上我會認爲持續調用會導致拋出一個異常,因爲readOnly屬性設置爲true,但事實並非如此,實體仍然愉快地持久存儲在內存中的HSQLDB中。
@Transactional(readOnly=true)
public Product save(Product product) throws HibernateException {
getEntityManager().persist(product);
return product;
}
的JPATransaction經理如下有線...
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:testdb;shutdown=false" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" id="jpaProperties">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="searchSystemEnvironment" value="true" />
<property name="location" value="classpath:landingPage-hibernate.properties"/>
</bean>
<util:properties id="jpaHibernateProperties">
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
</util:properties>
<bean id="hibernateVendor" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="${hibernate.dialect}"/>
<property name="showSql" value="${hibernate.show_sql}" />
<property name="generateDdl" value="${generateDdl}"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="landingPagePersistence"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="hibernateVendor"/>
<property name="jpaPropertyMap" ref="jpaHibernateProperties"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
會有人有JpaTransactionManager接口的事務性工作屬性的例子或我誤解JPA的使用完全?我可以在EntityManager的構造函數中看到,PersistenceContext總是與EXTRENDED相對,而TRANSACTION似乎對註釋是否被考慮有一些影響。任何幫助將不勝感激。
感謝, 馬克。
謝謝你的JB!我不認爲這可能只是一個暗示。儘管如此,我仍然看不到交易的控制權,而且在生產中堅持不會實際存入數據庫。它會繼續向上移動一個綁定到id的序列,但是沒有任何東西進入表中,日誌中也沒有任何跡象表明任何東西都已經出錯。 –