Ich habe zwei Entitymanager
Bean-Konfigurationen. Jeder zeigt auf eine separate Datenbank mit einem anderen Schema (einer ist Oracle, der andere ist ein In-Speicher H2)Spring Data JPA: Repositories für mehrere Datenbank/Entitymanger-Konfigurationen
Was könnte ich tun, um die Ambiguität zu lösen, welcher Entitymanager für jedes Repository verwendet werden sollte? Im Moment bin ich immer diese Fehlermeldung:
No unique bean of type [javax.persistence.EntityManagerFactory] is defined:
expected single bean but found 2
Ich denke, ich einfach eine schnelle Lösung bieten könnte durch so etwas wie
<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">
mit Aber hoffentlich gibt es eine bessere Lösung.
EDIT:
Ich gebe Ihnen eine Vorstellung von dem aktuellen Szenario:
Frühling-Config: Es sind zwei 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" /> ....
Alles von hier ist in „-Paket com.foo.repos.ora " Nach dem Muster von how to make a custom repository bekomme ich zwei Schnittstellen 'ARepository', 'ARepositoryCustom' und seine Implementierung 'ARepositoryImpl' wie so
@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
}
}
in der folgenden Fehlermeldung resultierende:
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
Was natürlich richtig ist, gibt es 2 EM Bohnen, aber da ich EM # 1 aka 'EntityManagerFactory' beschränkt zu verpacken ‚com.foo .repos.ora 'nur, ich bin mir immer noch nicht sicher, wie man die genaue EM Bohne referenziert.
2b) funktioniert auch wie ein Charme, wenn Sie zwei 'LocalContainerEntityManagerFactoryBean's in Ihrem Anwendungskontext haben, jedes mit ihrem eigenen 'persistenceUnitName'. –