首页 > 解决方案 > 如何使用休息调用在一对一映射中更新父表时更新子表

问题描述

@RestController
public class EmpController {

    @Autowired
    private EmployeeService empService;

    @RequestMapping("/addData")
    void AddEmpData(@RequestBody Employee emp)
    {

        empService.addData(emp);
    }

}

这是我的休息控制器。我能够将数据添加到父表 emp 。现在,每当我在 emp 表中插入新行时,我希望我的子表 Empdetails 能够自动更新。如何实现这一点。

@Service
public class EmployeServiceImpl implements EmployeeService{

    @Autowired
    private EmployeeRepository empResp;

    @Override
    public void addData(Employee emp) {
        empResp.save(emp);      
    }

}

我的家长班

公共员工(字符串 empName){

    this.empName = empName;
}
@Id
 @GeneratedValue(strategy=GenerationType.AUTO)
private long empId;

private String empName;

@OneToOne(fetch = FetchType.LAZY,
        cascade =  CascadeType.ALL,
        mappedBy = "emp")
private EmployeeDetails ed;

//getter 和 setter

我的孩子班

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long eId;
private String empCity;


private String salary;
@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "fkeyEmpId", nullable = false)

private Employee emp;

//getter 设置器

标签: springspring-mvcjpa

解决方案


如果您的 EmployeeDetails 对象为空,则不会在数据库中保存任何记录。如果要在 EmployeeDetails 表中保存默认数据,则应按如下方式初始化对象:

private EmployeeDetails ed = new EmployeeDetails ();

试一试并向我们解释。


推荐阅读