如何在 micronaut-data 中为多个数据源注入 JPA 存储库?

How to inject a JPA repository for multiple datasources in micronaut-data?

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

问题是,我如何声明注入的存储库变量,以便它访问 target 数据源?我可以声明 target 注入 EntityManagerSynchronousTransactionManager 如下所示,这些工作。但是这些注释都不会影响存储库变量或参数。

    @Inject
    @CurrentSession("target")
    EntityManager entityManager;

    @PersistenceContext(name = "target")
    SynchronousTransactionManager<Connection> transactionManager;    

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

已提议对此进行更改 in the micronaut-data project 并且正在考虑中。