角色role和权限perm是多对多关系,在中间表t_role_perm中有一个角色对应多个权限,我现在想取消几个权限,一般的数据库方式就是 delete from t_role_perm where role_id=? and perm_id=?就可以了,但是hibernate怎么才能达到这样的效果?
3条回答 默认 最新
- gc00001 2014-07-11 09:54关注
这得看你是怎么写hibernate的pojo了,如果是像一楼那样子把中间表也生成出来那么一楼那样子直接getSession().delete(RoleFunctionEntity)删除中间表中的数据就行了;如果你用hibernate反向工程生成pojo并且选择了enable many to many detect,那么不生成中间表的类, 那么你得先看看是哪一方在维护中间表,只要看mappedby加在哪一方那么那一方就不维护中间表,假如你这里role是维护中间表的,那么你先session.get(role.class,id)这样子拿出你这个角色对象role,然后你role.getPerms拿出这个权限的角色set集合,然后想去掉哪个权限就删除这个集合里相应的权限类就ok了,最后直接session.update(role)就行了 我说的是注解配置的hibernate你要是xml配置的我们再讨论
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报