Java 双向映射空值保留在子对象的父引用列中
母实体 雇主(家长) 来自邮递员的JsonJava 双向映射空值保留在子对象的父引用列中,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,母实体 雇主(家长) 来自邮递员的Json { "name" : "data", "empDetails":[{ "firstName" : "ttest", "lastName" : "te" }] } 我正在尝试在一个保存呼叫中保存,如。一旦父项被保存,子项将被自动持久化。但在执行此操作时,子列中的父引用将插入null。Spring不会在您的Employee实例中设置雇主值。您应该在控制器中手动设置它们: employer.g
{
"name" : "data",
"empDetails":[{
"firstName" : "ttest",
"lastName" : "te"
}]
}
我正在尝试在一个保存呼叫中保存,如。一旦父项被保存,子项将被自动持久化。但在执行此操作时,子列中的父引用将插入null。Spring不会在您的Employee实例中设置雇主值。您应该在控制器中手动设置它们:
employer.getEmpDetails().forEach(e -> e.setEmployer(employer));
mappedBy=“雇主”
这里还有其他不必要的文本,所以我可以发布它。您必须以某种方式引用子对象中的父对象,以便正确保留id的父对象 我想你有这样的想法:
Employer employer = new Employer("Employer");
Employee empX = new Employee("Employee 1", "My lastname")
employer.getEmpDetails().add(empX);
您可以扩展构造函数并设置父引用:
Employer employer = new Employer("Employer");
Employee empX = new Employee("Employee 1", "My lastname", employer)
employer.getEmpDetails().add(empX);
mappedBy=“雇主”这是一个打字错误。现在我更新了maybe,这就是为什么您要使用
mappedBy=“employee”
,但实际上应该是mappedBy=“employer”
Employer employer = new Employer("Employer");
Employee empX = new Employee("Employee 1", "My lastname")
employer.getEmpDetails().add(empX);
Employer employer = new Employer("Employer");
Employee empX = new Employee("Employee 1", "My lastname", employer)
employer.getEmpDetails().add(empX);