Java育儿园约架专栏

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);
    }
上一篇 下一篇

猜你喜欢

热点阅读