【问题标题】:How to inject a JPA repository for multiple datasources in micronaut-data?如何为 micronaut-data 中的多个数据源注入 JPA 存储库?
【发布时间】:2020-01-14 15:40:05
【问题描述】:

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

问题是,我如何声明一个注入的存储库变量,以便它可以访问 target 数据源?我可以像下面这样声明EntityManagerSynchronousTransactionManagertarget 注入,并且这些工作正常。但是这些注释都不会影响存储库变量或参数。

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

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

【问题讨论】:

    标签: java hibernate jpa micronaut micronaut-data


    【解决方案1】:

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

    已建议 in the micronaut-data project 更改此设置,并且正在考虑中。

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 2018-05-04
      • 1970-01-01
      • 2012-09-18
      • 2019-02-04
      • 1970-01-01
      • 2018-01-09
      • 2015-04-07
      • 2014-02-10
      相关资源
      最近更新 更多