我正在编写一个Web应用程序,我从格式化的客户端获取JSON对象:
var applicationForm = {
projectTitle: "",
applicantRow: [{
nameApplicant: "",
emailApplicant: "",
departmentApplicant: ""
}],
experimentRow: [{
lightOn: "",
tempDay: "",
....
}],
startdate: "",
enddate: ""
....
}
现在我想将它存储在3个表中,即应用程序,申请人,实验条件,其中applicationId将作为申请人和实验条件表中的外键。
@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;
}
...
ExperminetalCondition类:
@Entity
public class ExperimentalConditions {
private long experimental_id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getExperimental_id() {
return experimental_id;
}
...(getter,setters for other variables)
private Application application;
@ManyToOne
@JoinColumn(name = "applicationid")
public Application getApplication() {
return application;
}
...(getter setters)
与申请人表格相同的设置 在我的applicationDAO类中,我将这个应用程序对象保存在表中,然后应该将其保存在3个不同的表中。
ApplicationDAO:
public void save(Application applicationData){
getSession().save(applicationData);
}
这是我的控制器类,我在这里调用这个保存方法。
@RequestMapping(value="/submitApp",method=RequestMethod.POST)
public Application sumitApp(@RequestBody Application app ){
try{
applicationDAO.save(app);
}
这为所有3个表中的applicationForm保存数据,但application_id(外键)在申请人和experimentalconditions表中显示为null。因此,如果我想要获取数据,我无法检索它。请告诉我我错在哪里。
答案 0 :(得分:1)
根据您的关系所有者configuraiton,您需要从json字符串中获取ExperimentalConditions对象并在保存主应用程序数据之前编写此行
applicationData.getExperimentRow().setApplicaiton(applicationData);
为您的其他关系表(申请人)重复同样的事情