【发布时间】:2016-12-06 20:04:45
【问题描述】:
我有 2 个实体,医院和部门,部门通过其中的 hospital_id 引用其医院。
@Entity
public class Hospital {
...
private Set<Department> departments;
@OneToMany(mappedBy = "hospital", cascade = CascadeType.ALL)
public Set<Department> getDepartments() {
return departments;
}
}
@Entity
public class Department {
...
private Hospital hospital;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "hospital_id")
public Hospital getHospital() {
return hospital;
}
}
我使用 Rest API 创建实体实例:
@RequestMapping("/create")
@ResponseBody Hospital create(@RequestBody Hospital hospital){
hospital = hospitalService.save(hospital);
return hospital;
}
我发布 json 有效负载以创建医院:
{"name":"t-hospital", "departments":[{"name": "department1"}]}
由于我使用 SpringBoot,Jackson 会自动将 json 负载解析为 Java 对象,这里是它的医院和部门。
保存医院后,发现外键:'hospital_id' in department没有设置。
为什么会这样?如果可能,我如何在保存医院对象时设置外键?
【问题讨论】:
标签: java hibernate jpa spring-boot jackson