最近在做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會有這個限制。
