я столкнулся с вопросом, где у меня есть один метод, который звонит другой метод в слое службы следующим образом:@Transaction Выпуск: TransactionSynchronization.beforeCompletion бросил исключение
@Transactional
@Override
public void method1(List<String> vals)
{
for (String value : vals){
method2(value);
}
}
@Transactional(propagation= Propagation.REQUIRED)
public void method2(String value)
{
//Hibernate Call 1
//Hibernate Call 2
}
я поставил транзакционной аннотацию в методе 2 как это может быть вызвано и из контроллера.
И мой менеджер транзакций выглядит следующим образом:
<tx:annotation-driven transaction-manager="transactionManager"/>
<aop:aspectj-autoproxy/>
<!-- Transaction manager for hibernate -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<property name="dataSource" ref="dataSource"></property>
</bean>
Когда я бегу этот код, когда контроллер вызова метода 1 он дает следующее сообщение об ошибке:
12/22/11 18: 4455410: ERROR [HTTP-8181-1] (.support.TransactionSynchronizationUtils: 87) - TransactionSynchronization.beforeCompletion бросил исключение java.lang.IllegalStateException: Нет значения для ключа [org.hib [email protected]] связан нить [HTTP-8181-1] на org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource (TransactionSynchronizationManager.java:190) в org.springframework.orm.hibernate3.SpringSessionSynchronization .beforeCompletion (SpringSessionSynchronization.java:187) на org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCompletion (TransactionSynchronizationUtils.java:84) на org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion (AbstractPlatformTransactionManager.java:895) на org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit (AbstractPlatformTransactionManager.java:693) на org.spri ngframework.transaction.support.AbstractPlatformTransactionManager.commit (AbstractPlatformTransactionManager.java:678) на org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:321) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:116) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:171) в org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:204) в $ Proxy31 .method1 (Неизвестный источник)