no-session问题解决

作者: 磨陀货_ | 来源:发表于2019-09-25 19:53 被阅读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);
        }
    

    相关文章

      网友评论

        本文标题:no-session问题解决

        本文链接:https://www.haomeiwen.com/subject/afulyctx.html