Java 一对多和多对一映射在数据库列中显示null
我正在编写一个web应用程序,其中我从以下格式的客户端获取一个JSON对象:Java 一对多和多对一映射在数据库列中显示null,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,我正在编写一个web应用程序,其中我从以下格式的客户端获取一个JSON对象: var applicationForm = { projectTitle: "", applicantRow: [{ nameApplicant: "", emailApplicant: "", departmentApplicant: "" }],
var applicationForm = {
projectTitle: "",
applicantRow: [{
nameApplicant: "",
emailApplicant: "",
departmentApplicant: ""
}],
experimentRow: [{
lightOn: "",
tempDay: "",
....
}],
startdate: "",
enddate: ""
....
}
现在我想将其存储在3个表中,即Application、applicator、experimentalconditions,其中applicationId将充当applicator和experimentalconditions表中的外键
@Entity
public class Application {
private long application_id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getApplication_id() {
return application_id;
}
...
private List<ExperimentalConditions> experimentRow;
@OneToMany(targetEntity=ExperimentalConditions.class,mappedBy="application",
cascade=CascadeType.ALL,fetch=FetchType.EAGER)
public List<ExperimentalConditions> getExperimentRow() {
return experimentRow;
}
...
申请表的设置相同
在我的applicationDAO类中,我将这个应用程序对象保存在表中,然后表本身将它保存在3个不同的表中
申请日期:
public void save(Application applicationData){
getSession().save(applicationData);
}
这是我调用这个save方法的控制器类
@RequestMapping(value="/submitApp",method=RequestMethod.POST)
public Application sumitApp(@RequestBody Application app ){
try{
applicationDAO.save(app);
}
这将在所有3个表中为applicationForm保存数据,但application_id(外键)在申请人和实验条件表中显示为null。因此,如果我想取回数据,我无法检索它。请告诉我哪里错了。根据您的关系所有者配置,您需要从json字符串中获取ExperimentalConditions对象,并在保存主要应用程序数据之前写下这一行
applicationData.getExperimentRow().setApplicaiton(applicationData);
对您的另一个关系表(申请人)也重复同样的操作通过看到json,我觉得您的设计是可行的。应用程序类应该包含另外两个类。你能详细说明一下为什么我的设计是错误的吗?我不太明白你的意思。
applicationData.getExperimentRow().setApplicaiton(applicationData);