java - 如何在 micronaut-data 中注入(inject)多个数据源的 JPA 存储库?

标签 java hibernate jpa micronaut micronaut-data

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

问题是,如何声明注入(inject)的存储库变量以便它访问目标数据源?我可以声明 EntityManagerSynchronousTransactionManager目标注入(inject),如下所示,这些可以工作。但这些注释对存储库变量或参数都没有影响。

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

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

最佳答案

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

已提议更改此设置 in the micronaut-data project正在考虑中。

关于java - 如何在 micronaut-data 中注入(inject)多个数据源的 JPA 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737148/

相关文章:

java - 是否有生成 POM.xml 文件的 Java 类?

java - 谁能告诉我 java 中 volatile 和 static 的区别

java - JPA (Hibernate) 准备好的语句的 native 查询慢

java - 将 DTO 转换为实体,反之亦然

Java 枚举、JPA 和 Postgres 枚举 - 如何让它们一起工作?

java - java.util.HashSet 中的 contains() 方法的行为不符合我的预期

java - ffmpeg 用于屏幕捕获?

java - 为什么 hibernate 在更新事务期间调用删除?

java - "proxied"状态对于 Hibernate session 意味着什么

java - mvn install 忽略 hibernate 映射文件