Tôi có hai cấu hình bean Entitymanager
. Mỗi chỉ vào một cơ sở dữ liệu riêng biệt với một lược đồ khác (một là Oracle, một khác là một H2 trong bộ nhớ)JPA dữ liệu mùa xuân: Các kho lưu trữ cho nhiều cấu hình cơ sở dữ liệu/Entitymanger
Tôi có thể làm gì để giải quyết sự không rõ ràng của Entitymanager cho mỗi Kho lưu trữ? Ngay bây giờ tôi nhận được lỗi này:
No unique bean of type [javax.persistence.EntityManagerFactory] is defined:
expected single bean but found 2
Tôi đoán tôi có thể cung cấp một cách nhanh chóng-sửa chữa đơn giản bằng cách sử dụng một cái gì đó giống như
<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">
Nhưng hy vọng có một giải pháp tốt hơn.
EDIT:
tôi cung cấp cho bạn một ý tưởng về kịch bản hiện nay:
mùa xuân-Config: đang có hai 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" /> ....
Tất cả mọi thứ từ đây trên là trong "gói com.foo.repos.ora " Theo mẫu của how to make a custom repository Tôi nhận được hai giao diện 'ARepository', 'ARepositoryCustom' và triển khai 'ARepositoryImpl' của nó như vậy
@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
}
}
dẫn đến thông báo lỗi sau:
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
Đó là tất nhiên đúng, có 2 đậu EM, nhưng kể từ khi tôi bị hạn chế EM # 1 aka 'entityManagerFactory' đóng gói 'com.foo .repos.ora 'chỉ, tôi vẫn không chắc chắn làm thế nào để tham khảo chính xác EM đậu.
2b) cũng hoạt động như một nét duyên dáng nếu bạn có hai 'LocalContainerEntityManagerFactoryBean' trong ngữ cảnh ứng dụng của bạn, mỗi cái có 'persistenceUnitName' của riêng chúng. –