Spring+JPA @Transactional 未提交

2024-01-02

我知道以前曾在这里问过类似的问题,但我找不到问题的解决方案。基本上,我试图在 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(使用前将#替换为@)

Spring+JPA @Transactional 未提交 的相关文章

随机推荐