J'ai deux configurations de fèves Entitymanager
. Chaque pointant vers une base de données séparée avec un schéma différent (l'un est Oracle, l'autre est un H2 en mémoire)Ressource JPA: référentiels pour plusieurs configurations base de données/Entitymanger
Que pourrais-je faire pour résoudre l'ambiguïté de ce que Entitymanager devrait être utilisé pour chaque Repository? En ce moment, je reçois cette erreur:
No unique bean of type [javax.persistence.EntityManagerFactory] is defined:
expected single bean but found 2
Je suppose que je pourrais fournir une solution rapide en utilisant simplement quelque chose comme
<jpa:repositories base-package="com.foo.repos.ora"
entity-manager-factory-ref="entityManagerFactoryA">
<jpa:repositories base-package="com.foo.repos.m2"
entity-manager-factory-ref="entityManagerFactoryB">
Mais nous espérons qu'il ya une meilleure solution.
EDIT:
Je vous donne une idée du scénario actuel:
Spring-Config: il sont deux EM
<jpa:repositories base-package="com.foo.repos.ora" entity-manager-factory-ref="entityManagerFactory"/>
<jpa:repositories base-package="com.foo.repos.m2" entity-manager-factory-ref="entityManagerFactory2"/>
<context:component-scan base-package="com.foo" /> ....
Tout à partir d'ici est en « package com.foo.repos.ora " Suivant le modèle de how to make a custom repository je reçois deux interfaces 'ARepository', 'ARepositoryCustom' et son implémentation 'ARepositoryImpl' comme
@Repository
public interface ARepository extends ARepositoryCustom, JpaRepository<myEntity, BigDecimal>, QueryDslPredicateExecutor {
}
public interface ARepositoryCustom {
FooBar lookupFooBar()
}
public class ARepositoryImpl extends QueryDslRepositorySupport implements ARepositoryCustom {
ARepositoryImpl(Class<?> domainClass) {
super(domainClass.class)
}
ARepositoryImpl() {
this(myEntity.class)
}
@Override
FooBar lookupFooBar() {
JPQLQuery query = ....
....
return found
}
}
résultant dans le message d'erreur suivant:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'aRepositoryImpl': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 2
Ce qui est bien sûr correct, il y a 2 haricots EM, mais depuis que je restreint EM # 1 alias 'EntityManagerFactory' au package « com.foo .repos.ora 'seulement, je ne suis toujours pas sûr de savoir comment référencer le bean EM exact.
2b) fonctionne également comme un charme si vous avez deux 'LocalContainerEntityManagerFactoryBean's dans votre contexte d'application, chacun avec leur propre 'persistenceUnitName'. –