当前位置: 首页 > 知识库问答 >
问题:

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

苏雅珺
2023-03-14

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

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

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

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

共有1个答案

乔伯寅
2023-03-14

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

micronaut数据项目已提议改变这一点,目前正在考虑中。

 类似资料:
  • 有一些示例可以使用多个数据源: 但他们不使用实体管理器。是否有可能得到这样的东西: 谢了。

  • 无法像 spring 一样从注入的数据源获取连接,如文档(配置多个数据源)中所述,https://micronaut-projects.github.io/micronaut-sql/latest/guide/#:~:text=Configuring 多个数据源抛出

  • 我的应用程序有两个数据源。第一个数据源使用JdbcTemplate访问Postgre。第二个数据源使用Spring数据JPA访问CockroachDb。 所以我为这个数据源创建了两种配置。 除了具有空间数据的对象之外,坚持使用这两个数据源工作正常。当我试图保存空间数据到CockroachDb,我得到一个错误: Hibernate:选择geoobject0_. id为id1_2_0_,geoobje

  • 由于遗留原因,我们有很多代码坐在存储过程下。类似于spring数据(@procedure),在micronaut中有没有一种方法可以调用存储过程。我是否必须注入entityManager并使用CreateNamedStoredProcedureQuery()。

  • 我创建了一个micronaut应用程序,它可以通过jdbc模板访问多个数据源。 这将使用: 问题是我想以某种方式解密来自配置的密码。我的第一次尝试是“替换”工厂正在使用的bean,但没有运气,它给了我一个没有意义的错误(io.micronaut.context.exceptions.DependencyInjtionExctive)。 以下是我的替换尝试: 知道我做错了什么吗??谢谢 答:必须按照

  • 又不想工作,我不知道是怎么回事。 日志包含以下消息: 将项目放在github https://github.com/romanych2021/testjpaspring上