首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Spring Boot中设置基于环境/条件的@Table名称?

如何在Spring Boot中设置基于环境/条件的@Table名称?
EN

Stack Overflow用户
提问于 2021-02-03 16:58:38
回答 2查看 62关注 0票数 0

我有一个实体类,如下所示

代码语言:javascript
复制
@Entity
@Table(name = "USER")
public class Users {
...
}

在生产部署期间,我想要从这个用户表中读取。但是在阶段环境部署期间,我想要从USER_STAGE表中读取。

代码语言:javascript
复制
@Entity
@Table(name = if (env=='prod') ? "USER" : "USER_STAGE")
public class Users {
...
}

我如何在没有任何服务级别逻辑的情况下实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-03 17:19:17

考虑实现您自己的命名策略来更改表名。

然后将它们暴露为spring beans,并与spring boot集成。

由于命名策略本身可以是一个bean,因此它可以获取前缀的配置参数,该参数可以根据激活的配置文件、环境等进行更改。

我找到了this SO thread,它谈到了“纯hibernate”的命名策略。它还提供了一个修改表名的示例。

此外,请考虑阅读this tutorial -它讨论了如何将自定义命名策略与spring boot集成

票数 1
EN

Stack Overflow用户

发布于 2021-02-03 17:06:59

您应该通过分离数据库来实现这一点。

我建议你使用不同的spring配置文件来处理不同的数据库连接,并且只需设置一个本地开发数据库,例如使用docker。它应该是生产数据库的“副本”,这意味着它在结构上与生产数据库相似(例如,表、cols等的名称是相同的)。

最好的方法是使用flyway或liquibase或任何其他类似的工具来处理数据库的版本/迁移。

我有一个用于本地开发的配置文件,一个用于试运行,一个用于生产。这样你只需要管理spring的'application‘文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66024192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档