spring - 如何使用休息调用在一对一映射中更新父表时更新子表
问题描述
@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 设置器
解决方案
如果您的 EmployeeDetails 对象为空,则不会在数据库中保存任何记录。如果要在 EmployeeDetails 表中保存默认数据,则应按如下方式初始化对象:
private EmployeeDetails ed = new EmployeeDetails ();
试一试并向我们解释。
推荐阅读
- python - 有什么方法可以删除 Python 中的嵌套类?
- javascript - 使用 test 和 react-testing-library 测试一个反应组件
- mysql - 数据库崩溃后无法启动mysql(Laravel Homestead)
- javafx - 如何在javafx中获取单元格的列标题和第一列行值
- typescript - 由于未在堆栈级别指定帐户/区域,因此无法从上下文提供程序 ami 中检索值
- javascript - 如何使用javascript处理来自Spring控制器的变量?
- python - google calendar api not adding event and not throwing an error
- r - Is there a workaround for this failure to dodge in geom_violin?
- laravel - 如何在 URL 中隐藏密码
- javascript - 选择取决于一个查询数据库中的其他选择