我正在编写一个Spring Boot应用程序,它有多个dataSources和entityManagers,我想使用JPA CrudRepository接口,如:
@Repository
public interface Car extends CrudRepository<Car.class, Long> {}
。
我收到以下错误:
使用名称&#39; carRepository&#39;创建bean时出错:无法创建内部bean&#39;(内部bean)#350d0774&#39;类型为[org.springframework.orm.jpa.SharedEntityManagerCreator]时设置bean属性&#39; entityManager&#39 ;;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为&#39;(内部bean)的bean时出错#350d0774&#39;:无法解析对bean的引用&#39; entityManagerFactory&#39;设置构造函数参数时;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为&#39; entityManagerFactory&#39;的bean时出错。在类路径资源中定义
我无法弄清楚如何告诉JpaRepositoryFactory在构建存储库时要使用哪个实体管理器。它默认尝试注入名为:entityManagerFactory
的EntityManagerFactory答案 0 :(得分:3)
你可以在spring.xml中做些什么
<jpa:repositories base-package="com.a.b.repository"
entity-manager-factory-ref="yrEntityMAnagerFectorybeanRef"
transaction-manager-ref="yourTransactionManagerBeanRef"/>
在您的EntityManagerFactory bean中,您将引用您的entitymanager bean。
答案 1 :(得分:2)
在属性上检查documentation。
在Java配置类中使用下面的@EnableJpaRepositories
注释
具有entityManagerFactoryRef
和transactionManagerRef
属性。
@EnableJpaRepositories(basePackages = {
"com.myapp.repositories" }, entityManagerFactoryRef = "entityManagerFactoryRef1", transactionManagerRef = "transactionManagerRef1")
删除@Repository
界面上的Car
注释。如果指定basePackages
属性,Spring会将其注册为JPA存储库。