- 基本都是因为没有加懒加载(不要偷懒 )
解决n-to-n问题
问题二:当上面都做完之后,修改姓名,邮箱,年龄都可以;但是修改部门就会报错【n-to-n】 --- 持久化状态修改对象

1.部门什么时候变成持久对象的
2.我们又什么时候去改过他的id呢?
首先Employee是从数据库中来,他现在就是一个持久化对象
关键在于editEmployee---employee 现在是同一个对象
所以现在当传一些参数过来会设置一些参数

解决办法 ---- 【关连对象都设置成为null】

我们只要加一句 部门为空 到时候部门就不会是持久化对象,会是new出来的。
完整代码
//在任何方法前执行
@ModelAttribute("editEmployee")
public Employee beforeEdit(Long id,String cmd){
//cmd就是让他可以准确的找到update 不要所有都找影响性能
if (id != null && "update".equals(cmd)){
Employee editEmployee = employeeService.getOne(id);
//关连对象都设置为null,避免修改部门时出现n-to-n
editEmployee.setDepartment(null);
return editEmployee;
}
return null;
}
@RequestMapping("/update")
@ResponseBody
//这里@ModelAttribute("editEmployee") 要和上面能对应上
public JsonResult update(@ModelAttribute("editEmployee") Employee employee){
return saveOrUpdate(employee);
}
网友评论