Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在micronaut数据中为多个数据源注入JPA存储库?_Java_Hibernate_Jpa_Micronaut_Micronaut Data - Fatal编程技术网

Java 如何在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的目标注入,如下所示。但这两种注释都

我有一个micronaut数据应用程序,对于复制操作,我需要使用相同的JPA存储库来访问多个数据源。我想将它们注入不同的变量,例如
sourceRepo
targetRepo
。数据源在
应用程序.yml
中声明,名称为default和target。如果我使用
@Inject
声明存储库变量,它将被初始化以访问默认数据源

问题是,如何声明注入的存储库变量,以便它访问目标数据源?我可以声明
EntityManager
SynchronousTransactionManager
的目标注入,如下所示。但这两种注释都不会对存储库变量或参数产生影响

@Inject
@当前会话(“目标”)
实体管理器实体管理器;
@PersistenceContext(name=“target”)
SynchronousTransactionManager transactionManager;

回答我自己的问题:目前(从micronaut data 1.0.0.RC1开始)不可能直接为不同的数据源注入存储库。相反,
@Repository
注释可以选择接受数据源名称(例如,
@Repository(“target”)
。这意味着要在不同的存储库上使用存储库,需要在特定的类中声明它。要使用这样的存储库,需要将相应类的实例注入到使用代码中

已提议并正在考虑改变这一点