hibnernate 多对多 删除; 不是级联删除

来源:互联网 发布:网络电玩 编辑:程序博客网 时间:2024/04/30 05:51
    // 新增方法;----begin-----------------
    public String updateRoleResource() {

        try {
            Role role = null;
            if (roleid != null && !"".equals(roleid.trim())) {
                role = (Role) this.roleService.findById(Integer.parseInt(roleid
                        .trim()));

                role.setRoleName(newrolename);
                this.roleService.update(role);
            } else {
                role = new Role();
                if (newrolename != null && !"".equals(newrolename)) {

                    role.setRoleName(newrolename);
                }
                this.roleService.save(role);
                System.out.println("id-======" + role.getId());

            }

            Set<Resource> rs = role.getResources();

//            role.setResources(null);
//            this.roleService.update(role);

            for (Resource r : rs) {// 这样会把其他的关联的role 也 设置为null;
                
                r.getRoles().remove(role);
        //        r.setRoles(null);
                this.resourceService.update(r);
            }
            Set<Resource> newResources = new HashSet<Resource>();

            String[] arr = resourceids.split(",");

            for (String str : arr) {

                if (str != null && !"".equals(str)) {
                    DetachedCriteria dc = DetachedCriteria
                            .forClass(Resource.class);
                    dc.add(Restrictions.eq("ref_field", str));
                    List<Resource> rlist = (List<Resource>) this.resourceService
                            .findByCriteria(0, 1, dc);
                    // newResources.add(rlist.get(0));
                    Resource temp = rlist.get(0);
                    if (temp.getRoles() != null) {
                        temp.getRoles().add(role);
                    } else {
                        Set<Role> set = new HashSet<Role>();
                        set.add(role);
                        temp.setRoles(set);
                    }

                    this.resourceService.update(temp);// 澶栭敭鐢�resource 缁存姢;
                }
            }
            try {
                HttpServletResponse response = ServletActionContext
                        .getResponse();
                // ServletActionContext
                // .getResponse()

                response.setContentType("text/html");// 为html文本显示
                response.setCharacterEncoding("utf-8"); // 设置响应字符集
                response.getWriter()
                        .print("<script>window.parent.uploadSuccess('修改成功');</script>");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // role.setResources(newResources);
            // this.roleService.update(role);
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                HttpServletResponse response = ServletActionContext
                        .getResponse();
                response.setContentType("text/html");// 为html文本显示
                response.setCharacterEncoding("utf-8"); // 设置响应字符集
                response.getWriter()
                        .print("<script>window.parent.uploadSuccess('修改失败,请重试或者联系管理员');</script>");
                // ServletActionContext
                // .getResponse()
                // .getWriter()
                // .print("<script>window.parent.uploadSuccess('修改失败,请重试或者联系管理员');</script>");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                HttpServletResponse response = ServletActionContext
                        .getResponse();
                response.setContentType("text/html");// 为html文本显示
                response.setCharacterEncoding("utf-8"); // 设置响应字符集
                response.getWriter()
                        .print("<script>window.parent.uploadSuccess('修改失败,请重试或者联系管理员');</script>");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }

        return null;
    }