【发布时间】:2021-10-05 14:53:27
【问题描述】:
我正在尝试实现 Spring Data JPA 一对一的关系,但我遇到了问题。我有一张员工表和一张员工详细信息表。在员工表中,我有一个列employeeId,在表EmployeeDetail 中我有列employeeId。因此,当我向表中添加员工外键时,员工详细信息会自动增加。
这是我的实体:
Employee:
@OneToOne(mappedBy = "employee", cascade = CascadeType.ALL)
private EmployeeDetail employeeDetail;
EmployeeDetail:
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "employeeId")
private Employee employee;
这是我的班级EmployeeServiceImpl,还涉及到保存Employee和EmployeeDetail的方法。
public Employee saveEmployee(Employee employee) {
EmployeeDetail employeeDetail = employee.getEmployeeDetail();
employeeDetail.setEmployee(employee);
employee = employeeRepository.save(employee);
return employee;
}
在 EmployeeController 中,我有这两种方法来显示添加新员工和存储新员工的表单:
@GetMapping("/showFormForAdd")
public String showFormForAdd(Model theModel) {
// create model attribute to bind form data
Employee theEmployee = new Employee();
theModel.addAttribute("employee", theEmployee);
return "addNewEmployeeForm";
}
@RequestMapping(value = "/addNewEmployee",method = RequestMethod.POST)
@ResponseBody
public Employee addNewEmployee(@ModelAttribute("employee") @RequestBody Employee employee) {
Employee employeeResponse = employeeService.saveEmployee(employee);
return employeeResponse;
}
这只是添加新员工的.jsp 表单的一部分:
<form:form action="addNewEmployee" modelAttribute="employee" method="POST">
如您所见,我的模型属性是employee,但在我的.jsp 文件中无法识别。
我可以通过什么方式修复它?那么当我创建新员工时,他的 ID 会自动存储在 EmployeeDetail 中吗?或者如何将数据添加到我的相关表(EmployeeDetail)?
【问题讨论】: