У меня две конфигурации 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">
Но, надеюсь, есть лучшее решение.
EDIT:
Я даю вам представление о текущем сценарии:
Spring -Config: есть два 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: Ошибка при создании bean с именем " aRepositoryImpl": инъекция ошибки настойчивости не удались; вложенное исключение org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет уникальным bean типа [javax.persistence.EntityManagerFactory] является определенный: ожидаемый сингл bean, но найден 2
Что, конечно, правильно, есть 2 EM beans, но поскольку я ограничил EM # 1 aka 'entityManagerFactory' только для пакета com.foo.repos.ora, я все еще не уверен, как ссылаться точный EM bean.