【发布时间】:2019-05-13 23:27:05
【问题描述】:
当我进行 REST API 调用时,我正在尝试使用 Spring-Boot 动态生成模式。例如,我使用两个不同的 JSON 主体对 http://localhost:8080/school 进行休息调用。
呼叫 1:
{id: 1111, name: "XYZ"}
呼叫 2:
/school
{id: 1234, name: "ABCD", contact: "test@test.com"}
请求正文被转换为每个请求的表或集合的架构。
表或集合名称学校
第一次通话
{id: Number, name: String}
我进行了另一个 API 调用,但传递了不同的 JSON 正文(对于调用 2):
表或集合名称学校
{ id: Number, name: String, contact: String}
谁能告诉我该怎么做,好吗?我在后端使用 MySQL 数据库。
【问题讨论】:
-
在回答出现的第一个问题之前是:为什么?你为什么要这样做?作为一个经验法则,动态创建数据库结构 (DDL) 是一个坏主意,通常表明需要重新审视设计/架构。如果您正在构建一个多租户系统,那么了解您的一些要求是值得的。换句话说,我的简短回答/建议是:不要这样做。
-
我这样做是为了学习如何动态创建模式。
-
如果有使用 Springboot 的方法,请告诉我
-
如果您使用 Spring Data 和 Hibernate,这里有一个有用的链接 - stackoverflow.com/q/42135114/9121293
-
您是想要动态地使用不同的架构,还是想要存储具有不同结构/架构的记录?如果是后者,那么您可能需要以下内容之一:a)可选字段的可空列(例如您给出的示例中的“联系人”); b) 继承,由 JPA 映射支持; c) 将原始 JSON 存储在 Postgres(和其他)支持的数据库中; d) 一个“无模式”数据库,例如 CouchDB 或 Mongo。
标签: java mysql json rest spring-boot