Aucune qualification bean de type [org.springframework.des transactions.PlatformTransactionManager] est défini
Je suis à l'aide de 2 Weblogic sources de données; Dans mes configurations XML j'ai 2 unités de persistance, 2 entityManagerFactories, et 2 transactionManagers. Les fichiers sont comme suit:
persistence.xml:
<persistence-unit name="modelPersistence" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
</persistence-unit>
<persistence-unit name="orderPersistence" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
</persistence-unit>
config.xml:
<!-- transactionManagers -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="transactionManagerLegacy" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryLegacy" />
</bean>
<!-- entityManagerFactory -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSourceModel"/>
<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml" />
<property name="persistenceUnitName" value="modelPersistence" />
<property name="jpaProperties">
<props>
<prop key="eclipselink.logging.level">FINE</prop>
</props>
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
<property name="databasePlatform" value="org.eclipse.persistence.platform.database.OraclePlatform" />
<property name="generateDdl" value="true"/>
<property name="showSql" value="true"/>
</bean>
</property>
</bean>
<!-- entityManagerFactoryLegacy -->
<bean id="entityManagerFactoryLegacy" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSourceOrder"/>
<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml" />
<property name="persistenceUnitName" value="orderPersistence" />
<property name="jpaProperties">
<props>
<prop key="eclipselink.logging.level">FINE</prop>
</props>
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
<property name="databasePlatform" value="org.eclipse.persistence.platform.database.OraclePlatform" />
<property name="generateDdl" value="true"/>
<property name="showSql" value="true"/>
</bean>
</property>
</bean>
<!-- data source 1-->
<bean id="dataSourceModel" class="org.springframework.jndi.JndiObjectFactoryBean" depends-on="model-datasource-jndi">
<property name="jndiName" ref="model-datasource-jndi" />
<property name="resourceRef" value="true" />
</bean>
<!-- data source 2-->
<bean id="dataSourceOrder" class="org.springframework.jndi.JndiObjectFactoryBean" depends-on="order-datasource-jndi">
<property name="jndiName" ref="order-datasource-jndi" />
<property name="resourceRef" value="true" />
</bean>
<!-- configure persistenceUnitManager -->
<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml" />
<property name="dataSources">
<map>
<entry key="jdbc/MODEL-DS" value-ref="dataSourceModel"/>
<entry key="jdbc/ORDER-DS" value-ref="dataSourceOrder"/>
</map>
</property>
</bean>
<jpa:repositories base-package="org.codingpedia.demo.repositories.ModelRepository" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager"/>
<jpa:repositories base-package="org.codingpedia.demo.repositories.OrderRepository" entity-manager-factory-ref="entityManagerFactoryLegacy" transaction-manager-ref="transactionManagerLegacy"/>
ModelRepository:
@Repository ("ModelRepo")
@PersistenceContext(unitName = "modelPersistence")
public interface ModelRepository extends JpaRepository<Model, String> {}
orderRepository:
@Repository ("OrderRepo")
@PersistenceContext(unitName = "orderPersistence")
public interface OrderRepository extends JpaRepository<Model, String> {}
Toutes les suggestions sur l'annotation correcte pour la manipulation de plusieurs responsables de la transaction? Ai-je raté quelque chose? Autre pile de dépassement des exemples d'utilisation DAOs lequel je n'ai pas trouvé utile comme je suis à l'aide de référentiels, le modèle et le contrôleur de fichiers java. Je ne suis pas non plus l'utilisation d'hibernate, qui a beaucoup d'exemples de référence. Votre regard est apprécié.
Je reçois l'erreur suivante:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected single matching bean but found 2: transactionManagerLegacy,transactionManager
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:365)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331)
at org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:370)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:271)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy120.findAll(Unknown Source)
at org.codingpedia.demo.controller.BaseController.index(BaseController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:243)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3432)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
<jpa:repositories />
éléments pour chacun des dépôts différents, chacun étant associé à la bonne entitymanagerfactory et gestionnaire de transactions. Fondamentalement, actuellement, vous faites simplement faux.Vous devez configurer spring-data-jpa correctement votre configuration est mauvaise, c'est aussi ce que la documentation est vous dire. Il n'a rien à voir avec la veille prolongée ou pas c'est une question de configuration de Spring Data JPA correctement, il a besoin de savoir quelle entité manager et un gestionnaire de transactions à utiliser les référentiels. Aussi avoir 2
<tx:annotation-driven />
éléments ne fonctionne pas, vous ne pouvez avoir qu'un, ou au moins une seule (la dernière en date définie) sera utile.Vous devez avoir un autre référentiel élément ou
@EnableJpaRepositories
quelque part que c'est en utilisant les paramètres par défaut ou tente de le faire. Probablement dans le fichier de configuration chargé par le DispatcherServlet
.Les 2 seuls référentiels, j'ai fourni ci-dessus; peux pas trouver une raison pour laquelle la configuration ci-dessus ne fonctionne pas. @M. Deinum
Il n'est pas sur les dépôts, il est à propos de votre configuration qui doit contenir plus de
<jpa:repository />
éléments ou un @EnableJpaRepositories
ou qu'il contient autre chose qui a ces permis.
OriginalL'auteur Jay113 | 2015-10-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser:
Voir org.springframework.des transactions.annotation.Transactionnelle (@Transactionnelle) annotation javadoc:
Donc, s'il vous plaît essayez la configuration du gestionnaire de transactions pour tous les dépôts (à voir si ça aide): <jpa:des dépôts de base-package="certains.package1" gestionnaire de transactions-ref="transactionManager1"/>
Connaissez-vous des ressources supplémentaires?
Grande réponse qui fonctionne pour moi. Savez-vous par hasard de toute possibilité de réaliser la même chose avec
javax.transaction.Transactional
annotation?malheureusement, il n'existe pas une telle option pour javax.des transactions.Transactionnelle
OriginalL'auteur rgrebski
Dans votre cas, il doit être:
parce que c'est l'ID de vos haricots.
Si vous souhaitez que plusieurs de source de données, je vous suggère de lire ceci: http://www.baeldung.com/spring-data-jpa-multiple-databases
Ne pas se concentrer sur l'hibernation fait (qui n'est pas pertinente) l'important, c'est qu'il vous montre (dont vous ignorez comment faire pour configurer Spring Data JPA correctement pour plusieurs
EntityManagerFactory
s etTransactionManager
s.Mise à jour: Merci pour l'aide les gars, je suis vraiment nouveau dans ce concept. @M. Deinum j'ai ajouté le 2 <jpa:des dépôts> instructions dans le application-context.xml et l'exemple et l'ont remplacé par la mise en veille prolongée pour Eclipse Lien, toujours pas de chance.
Ajouter votre mise à jour de la configuration de votre question. Il doit y avoir autre chose dans la config opération de déclenchement gestionnaire recherche de quelque chose dont vous n'avez pas posté.
Et d'ajouter plein de trace de pile.
OriginalL'auteur Robert Niestroj
Actuellement Dali prend uniquement en charge les une Unité de Persistance et une Persistance fichier XML par projet. D'autres configurations peuvent exister dans une JPA projet, mais la validation et les valeurs par défaut de traitement peut ne pas être correcte lorsque plusieurs unités de persistance sont utilisés. Découvrez plus d'informations ici.
OriginalL'auteur