Java 如何在micronaut数据中为多个数据源注入JPA存储库?
我有一个micronaut数据应用程序,对于复制操作,我需要使用相同的JPA存储库来访问多个数据源。我想将它们注入不同的变量,例如Java 如何在micronaut数据中为多个数据源注入JPA存储库?,java,hibernate,jpa,micronaut,micronaut-data,Java,Hibernate,Jpa,Micronaut,Micronaut Data,我有一个micronaut数据应用程序,对于复制操作,我需要使用相同的JPA存储库来访问多个数据源。我想将它们注入不同的变量,例如sourceRepo和targetRepo。数据源在应用程序.yml中声明,名称为default和target。如果我使用@Inject声明存储库变量,它将被初始化以访问默认数据源 问题是,如何声明注入的存储库变量,以便它访问目标数据源?我可以声明EntityManager或SynchronousTransactionManager的目标注入,如下所示。但这两种注释都
sourceRepo
和targetRepo
。数据源在应用程序.yml
中声明,名称为default和target。如果我使用@Inject
声明存储库变量,它将被初始化以访问默认数据源
问题是,如何声明注入的存储库变量,以便它访问目标数据源?我可以声明EntityManager
或SynchronousTransactionManager
的目标注入,如下所示。但这两种注释都不会对存储库变量或参数产生影响
@Inject
@当前会话(“目标”)
实体管理器实体管理器;
@PersistenceContext(name=“target”)
SynchronousTransactionManager transactionManager;
回答我自己的问题:目前(从micronaut data 1.0.0.RC1开始)不可能直接为不同的数据源注入存储库。相反,@Repository
注释可以选择接受数据源名称(例如,@Repository(“target”)
。这意味着要在不同的存储库上使用存储库,需要在特定的类中声明它。要使用这样的存储库,需要将相应类的实例注入到使用代码中
已提议并正在考虑改变这一点