我有两个Entitymanager
bean的配置。 各指向一个单独的数据库具有不同的模式(一个是Oracle,另一种是在内存中的H2)
我能做什么,解决什么样的EntityManager应该用于每个库的不确定性? 现在,我得到这个错误:
No unique bean of type [javax.persistence.EntityManagerFactory] is defined:
expected single bean but found 2
我想我可以简单地通过使用类似提供快速修复
<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">
但希望有一个更好的解决方案。
编辑:
我给你当前方案的想法:
Spring的配置:这里有两种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" /> ....
从这里的一切都是在“包com.foo.repos.ora”继格局如何使自定义库 ,我得到两个接口“ARepository”,“ARepositoryCustom”及其实施“ARepositoryImpl”像这样
@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
}
}
导致以下错误消息:
org.springframework.beans.factory.BeanCreationException:由造成错误创建名为“aRepositoryImpl”豆:持久性的依赖注入失败; 嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:类型的无独特豆[javax.persistence.EntityManagerFactory]被定义: 预期单个豆但发现2
这当然是正确的,有2种EM豆,但由于我的限制EM#1又名“entityManagerFactory的”打包“com.foo.repos.ora”而已,我还是不知道如何引用确切的EM豆。