没有定义名为“ transactionManager”的bean

我已经用实体管理器配置了两个持久性单元,如下所示:

<bean id="liveEntityManagerFactory" 

class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"

p:dataSource-ref="LiveDataSource">

<property name="persistenceUnitName" value="LivePersistenceUnit" />

</bean>

<bean id="archiveEntityManagerFactory"

class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"

p:dataSource-ref="ArchiveDataSource">

<property name="persistenceUnitName" value="ArchivePersistenceUnit" />

</bean>

然后,我将事务管理器配置为

 <bean id="LiveTransactionManager"

class="org.springframework.orm.jpa.JpaTransactionManager"

p:entityManagerFactory-ref="liveEntityManagerFactory"/>

<bean id="ArchiveTransactionManager"

class="org.springframework.orm.jpa.JpaTransactionManager"

p:entityManagerFactory-ref="archiveEntityManagerFactory"/>

我最初只有一个配置,它被称为“

transactionManager”。Addint一个附加的持久性单元似乎会生成错误。我不明白的一件事,如果我配置了两个持久性单元(每个持久性单元用于一个单独的数据库),是否还需要为每个数据源配置一个单独的实体管理器和一个事务管理器?

我得到的错误如下所示:(我搜索了所有文件,找不到在任何地方有“ transactionManager”引用的地方)

org.springframework.ws.soap.client.SoapFaultClientException: No bean named 'transactionManager' is defined

at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37)

at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:774)

at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:600)

at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537)

at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:384)

at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)

at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:370)

at com.ws.client.SoapTest.testFail(SoapTest.java:140)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)

at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)

at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)

at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)

at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)

at org.junit.runners.ParentRunner.run(ParentRunner.java:220)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)

at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)

at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)

at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)

at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)

at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)

at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)

at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)

我在Jpa / Hibernate中使用Spring。

谢谢

回答:

transaction-manager属性的默认值是transaction-

manager。对于您的情况,应该指定要针对每个方法或服务使用的事务管理器,如下所示:

@Service

@Transactional(value="LiveTransactionManager")

class someClass...

要么

@Transactional(value="ArchiveTransactionManager") 

public void someMethod

以上是 没有定义名为“ transactionManager”的bean 的全部内容, 来源链接: utcz.com/qa/405816.html

回到顶部