我知道以前曾在这里问过类似的问题,但我找不到问题的解决方案。基本上,我试图在 Spring 中通过 Hibernate 使用 JPA,但数据是not由于某种原因而被持久化。在 spring 事务上打开调试没有显示任何内容 - EntityManager 打开和关闭,但就事务管理器而言没有显示任何内容......我确信我错过了一些大东西,任何帮助都表示赞赏!请参阅以下内容了解更多详细信息。
TIA
Oliver
基本布局如下:类FooDaoJPA
的保存函数调用entityManager.persist(object)
持久化对象。
class FooServiceImpl
通过以下方式实现服务接口:
@Transactional(rollbackFor = DataAccessException.class,
readOnly = false, timeout = 30,
propagation = Propagation.SUPPORTS,
isolation = Isolation.DEFAULT)
public void saveFoo(Foo foo) throws DataAccessException {
fooDao.save(foo);
}
注意到fooDao
由Spring IoC注入
最后控制器被注入FooService
并打电话saveFoo()
保存数据。
JPA配置
<!-- JPA Entity Manager Factory -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="feDataSource"/>
<!-- Transaction Config -->
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"/>
<tx:annotation-driven mode="aspectj"
transaction-manager="transactionManager"/>
请注意mode="aspectj"
在你的配置中。它需要额外的配置,通常您不应该使用它,除非您了解它的含义以及为什么需要它。看10.5.6 使用@Transactional http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)