0

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

问题是,我如何声明一个注入的存储库变量,以便它访问目标数据源?我可以在下面声明或类似的目标注入,并且这些工作。但是这些注释都不会影响存储库变量或参数。EntityManagerSynchronousTransactionManager

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

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

1 回答 1

0

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

micronaut-data 项目中已经提出了改变这一点 ,并且正在考虑中。

于 2020-01-22T10:50:25.453 回答