no-session问题解决
2019-09-25 本文已影响0人
磨陀货_
- 基本都是因为没有加懒加载(不要偷懒 )
解决n-to-n问题
问题二:当上面都做完之后,修改姓名,邮箱,年龄都可以;但是修改部门就会报错【n-to-n】 --- 持久化状态修改对象
以上错大概意思就是 :持久状态的对象是不能修改OID(不能修改主键)----说我们改部门id【Department】1.部门什么时候变成持久对象的
2.我们又什么时候去改过他的id呢?
首先Employee是从数据库中来,他现在就是一个持久化对象
关键在于editEmployee---employee 现在是同一个对象
所以现在当传一些参数过来会设置一些参数
产生问题的原因,修改了id
解决办法 ---- 【关连对象都设置成为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);
}