在Spring Boot中以@ManyToOne关系发布JSON

时间:2019-05-14 15:07:49

标签: json spring rest spring-boot jpa

我已经在Spring Boot中编写了一个测试应用程序。员工与部门有关系。 CRUD可以工作,但是我不确定我用的是正确的方法。

创建新员工时,我必须发送以下职位请求

    "id": 3,
    "firstname": "John",
    "lastname": "Doe",
    "salary": 50000,
    "department": {
        "id": 2,
        "name": "Sales"
    } 
}

这是员工类别:

@Entity
public class Employee {
    @Id
    @GeneratedValue
    private Long id;
    private String firstname;
    private String lastname;

        @ManyToOne(cascade = CascadeType.ALL)
        @JoinColumn(name = "department_id", referencedColumnName="id")
    private Department department;
    private int salary;

这是EmployeeController中的create方法:

    @PostMapping("/employees")
    public Employee create(@RequestBody Employee employee) {
        return employeeService.add(employee);
    }

部门条目已存在。 是否可以在不填写完整关系的情况下创建员工 (部门)? 我只想添加部门编号。但是,如果我这样做,则json数据中的名称字段为空(获取请求)

id  3
firstname   "John"
lastname    "Doe"
department  
  id    2
  name  null
salary  50000

还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您将实体作为请求主体,这不是正确的方法。您可以将Some VO作为请求对象,然后在服务内转换为Entity。 对于

EmployeeVO{
private String firstname;
private String lastname;
List<Integer> departments;
}

此外,您可以使用Jackson注释,例如 @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL)可忽略未知属性,但不包含空属性。