spring - 如何在 Spring Boot 中将嵌套的 JSON 对象映射为 SQL 表行
问题描述
我正在使用 Spring 和 JPA 一起开发 API。我正在处理一个POST
接受@RequestBody
为 JSON 对象的请求,如下所示 -
{
"id": "323",
"name": "Sam",
"gpsLocation": {
"latitude": 66.7492558,
"longitude": 97.133258
}
}
User
还有一个包含以下列的 SQL表 -
id | name | latitude | longitude
Spring中有没有办法将这个嵌套的json对象直接映射到这些表列?
这就是我User.java
和GpsLocation.java
实体类现在的样子——
@Table(name = "user")
@Entity
public class UnderObservation {
@Column(name = "name", nullable = false)
private String name;
@Id
@Column(name = "id", nullable = false)
private String userID;
private GpsLocation location;
}
@Entity
public class GpsLocation {
@Column(name = "Latitude", nullable = false)
private Double Latitude;
@Column(name = "Longitude", nullable = false)
private Double Longitude;
}
我正在寻找一种“展平/展开”GpsLocation
类的方法,以便它直接适合User
表格,而不是为GpsLocation
.
我无法更改 JSON 结构,因为其他一些无 SQL 数据库正在使用它。另外,我是春天的新手!
解决方案
这里的最佳实践是使用DTO
数据传输对象来保存并使用外部库request body
将其映射到对象,或者甚至手动执行。user
mapstruct
ObjectMapper
DTO 是一个 pojo 对象,在进程之间携带数据
推荐阅读
- r - 根据给定值通过 ID 更改数据集中的观察次数
- python - 我可以在不更改 django 应用程序的情况下使用 FastAPI 扩展我的 Django 项目吗?
- visual-studio-code - 运行 Web 项目时的 Visual Studio Code 隐身模式
- sql - 使用 json 对象更新 SQL 表
- apache - 在 CentOS 7 中 SSL 连接到 Apache 服务器端口 443
- javascript - 部分匹配文件到字符串 - 字符串和 CSV 文件都包含名称中的时间戳,两个时间戳/名称之间差异的秒数
- javascript - Netlify Forms Nuxt JS 错误 - POST https://festive-fermi-f2a8f1.netlify.app/ 404。未捕获(承诺)错误:请求失败,状态码 404
- api - 我在使用 Youtube RATE API 时遇到问题
- django - Django 迁移修改继承的默认值
- http - 无法读取整个响应正文