【发布时间】:2014-08-25 10:53:07
【问题描述】:
我正在使用 Spring 3.2.5.Release 和 Hibernate 4.2.7.Final。我正在 Websphere 7 服务器上部署我的耳朵。我有两个应用程序上下文文件,每个文件都有自己的类型
的 sessionFactory <bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">....</bean>
<bean id="sessionFactory1"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="true">... </bean>
问题在于多个 HibernateTransactionManager。我将两个事务管理器定义为
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<qualifier value="transactionManager"/>
</bean>
和
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory1" />
<qualifier value="txManager"/>
</bean>
在我提到的其中一个上下文文件中
<tx:annotation-driven/>
<bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
然而,在这段代码的运行期间,
loggingManager.persistLog(loadLog); // using txManager
.....
persistenceService.persist(dataEntity); // using transactionManager
我得到以下异常
org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory'
请注意,第一笔交易是成功的。我看到为 loadLog 生成的 id。我已经用
注释了我的服务层 @Transactional(value="txManager") // with respective transaction manager
还有我的 DAO 层
@Transactional(propagation = Propagation.MANDATORY)
有什么办法可以同时启用这两个事务管理器吗?
【问题讨论】:
标签: transactions annotations spring-3 sessionfactory hibernate-4.x