如何在 Spring 生态系统中使用 JPA hibernate 连接到不同的 mysql 数据库模式?

Posted

技术标签:

【中文标题】如何在 Spring 生态系统中使用 JPA hibernate 连接到不同的 mysql 数据库模式?【英文标题】:How can I connect to different mysql database schemas using JPA hibernate in Spring ecosystem? 【发布时间】:2019-04-08 08:41:09 【问题描述】:

我的 Spring Boot 应用程序有 mysql 后端。我在不同的模式中隔离了数据库表。我希望将来自不同模式的表作为我的休眠实体来处理。但是,我只能访问一个模式,该模式与我在 applications.properties 中的连接 URL 一起提到。此外,使用 @Table(schema="mySchema", name="tbl1") 不会给出预期的结果。这不是 Postgres 数据库引擎的问题,因为在 PostgreSQL 中,模式和数据库具有完全不同的含义。是否有任何解决方法问题?

【问题讨论】:

你试过name="myschema.tbl1"吗?在 mysql 中,databasename.tablename 格式允许您访问同一服务器实例上另一个数据库(模式)中的表。 我能够解决我的问题。这是由术语引起的混乱。如果您使用的是 mysql 后端,则需要在 @Table 注释 @Table(name="tbl_name", catalog="schema_name") 中使用目录属性而不是模式属性 【参考方案1】:

您需要为每个模式配置数据源,因为模式与 mySQL 中的数据库同义。这个 *** 答案https://***.com/a/45665826/5107365 详细说明了如何配置多个 jpa 存储库以在 Spring Boot 环境中使用多个数据源。请检查。

【讨论】:

【参考方案2】:

我尝试在 @Table 注释中使用目录属性并且它有效。

【讨论】:

以上是关于如何在 Spring 生态系统中使用 JPA hibernate 连接到不同的 mysql 数据库模式?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data 系列 Spring+JPA(spring-data-commons)

尝试使用Spring / JPA / Hikari在我的代码中查找数据库连接泄漏

Spring Boot整合Spring Data JPA

Spring boot jpa @Column命名大小写问题

在Spring Boot中使用Spring-data-jpa实现分页查询(转)

Spring JPA无法提交jdbc事务的解决办法