首页 > 解决方案 > 如何在 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.javaGpsLocation.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 数据库正在使用它。另外,我是春天的新手!

标签: springspring-bootjpaspring-data-jpajackson

解决方案


这里的最佳实践是使用DTO数据传输对象来保存并使用外部库request body 将其映射到对象,或者甚至手动执行。usermapstructObjectMapper

DTO 是一个 pojo 对象,在进程之间携带数据


推荐阅读