zoukankan      html  css  js  c++  java
  • Hibernate多对多中间表数据更新问题

    最近在做oa系统:角色(Role)和权限(Privilege) 是多对多关系,实体类关系映射采用注解方式

    //角色类中映射权限关系
    @ManyToMany
    public Set<Privilege> getPrivileges() { return privileges; }
    //权限类中映射角色关系
    @ManyToMany(mappedBy="privileges") public Set<Role> getRoles() { return roles; }
    //部分更新功能代码:1.设置角色中的权限属性;2.更新到数据库
    role.setPrivileges(new HashSet<Privilege>(privilegeList)); roleService.update(role);

    这种配置下中间表会更新,但是如果mappedBy放在角色类中,再更新角色的话,中间表则不会更新,后台也不会报错。

    简单说明,因为在权限类中使用了mappedBy指向了角色对象中的privileges,这样的意思就是只能通过角色操作来做中间表(role_privilege)维护工作。

    如果mappedBy放在角色类中指向权限对象中的roles,则通过角色来做维护的时候,中间表是不会做任何数据修改工作的,只能通过权限维护操作中间表(privilege_role)。

    注:不知道为何Hibernate会有这个限制。

  • 相关阅读:
    215. 数组中的第K个最大元素
    c++集合的操作
    201. 数字范围按位与
    150. 逆波兰表达式求值
    二叉树的遍历算法
    144. 二叉树的前序遍历
    139. 单词拆分 DP
    131. 分割回文串
    695. 岛屿的最大面积 DFS
    leetcode 200. 岛屿数量 DFS
  • 原文地址:https://www.cnblogs.com/zywu/p/5575586.html
Copyright © 2011-2022 走看看