首页 > 解决方案 > 基于 JSON 负载的动态继承实体

问题描述

所以我有这个2 个子实体List<Vehicle> vehicles;Vehicle父实体CarTruck. 我想要做的是发送一个 POST 请求,并自动为服务层创建相应的对象,Car或者Truck根据 JSON 有效负载。

Vehicle

@Entity
@Table(name = "vehicle")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Vehicle{

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private Integer index;

    public Vehicle() {
    }

    // getters and setters
}

Car

@Entity
@Table(name = "car")
public class Car extends Vehicle {

    private Integer maxSpeed;

    private String brand;

    public Car () {
    }

    public Car(Integer index, Integer maxSpeed, String brand) {
        super(index);
        this.maxSpeed = maxSpeed ;
        this.brand = brand;
    }

    // getters and setters
}

Truck

@Entity
@Table(name = "truck")
public class Truck extends Vehicle {

    private Integer weight;

    private Double size;

    public Truck() {
    }

    public Truck(Integer index, Integer value, String period) {
        super(index);
        this.weight = weight;
        this.size= size;
    }

    // getters and setters
}

JSON会是这样的:

"vehicles": 
        [
            {
                "index": 1,
                "maxSpeed": "180",
                "brand": "Renault"
            },
            {
                "index": 0,
                "weight": 4000,
                "size": 25.0
            },
            {
                "index": 3,
                "weight": 3700,
                "size": 17.0
            },
            {
                "index": 2,
                "maxSpeed": "230",
                "brand": "Mercedes"
            }
        ]

并将这个 JSON 作为 POST 请求的主体发送,我想读取每辆车并根据它们的属性创建相应的车辆类型(索引 0 -> 卡车、索引 1 -> 汽车等)。

标签: javaspringspring-bootjpaspring-data-jpa

解决方案


推荐阅读