在ROLE-PERMISSION场景中的多对一或多对多映射

时间:2012-09-26 06:24:43

标签: hibernate orm many-to-many one-to-many hibernate-mapping

我是Hibernate的新手,只是经历了几个样本

经过几个样本后,我仍然对决定表之间的关系感到困惑。

考虑一下情节,我有角色和权限分配给它

Role              Permission
------------------------------------------------------
ROLE_ADMIN    =   Create, Update, Delete, View
ROLE_MANAGER  =   Update, View
ROLE_VIEWER   =   View

在这种情况下,我创建了这样的表,

Role
-----
role_id(PK) role_name

Permission  
-----------
permission_id(PK) permission_name

Role_Permission
-----------------
role_permission_id   role_id(FK)    permission_id(FK)

现在,在这种情况下,1个角色可以拥有多个Permisssion,而许多权限可以属于一个角色,所以我认为考虑到这个数字,这是一对多的关系,

Role_Permission
-----------------
role_permission_id   role_id(FK)    permission_id(FK)
----------------------------------------------------------
1--------------------1---------------1     
2--------------------1---------------2     
3--------------------1---------------3     
4--------------------2---------------1     
5--------------------2---------------3     

具有Id 1的角色被映射到具有Id为1,2,3的许多权限。 许多权限如1,2,3属于一个ID为1的角色

所以我认为这是一对多


我也认为它属于多对多, 在我的脑海中考虑这张照片,

role_permission_id   role_id(FK)    permission_id(FK)
----------------------------------------------------------
1--------------------1---------------1     
2--------------------1---------------2     
3--------------------1---------------3     
4--------------------2---------------1     
5--------------------2---------------3     

具有Id 1,2的角色被映射到具有Id为1,2,3的许多权限。 许多权限如1,2,3属于许多角色,其ID为1和2

所以我认为这是多对多


我也认为它属于多对一,

role_permission_id   role_id(FK)    permission_id(FK)
----------------------------------------------------------
1--------------------1---------------1     
2--------------------1---------------2     
3--------------------1---------------3     
4--------------------2---------------1     
5--------------------2---------------3     

具有Id 1,2的角色被映射到具有Id为1的权限。 id为1的权限属于许多具有id为1和2的角色

所以我认为这是多对一

我对如何判断映射感到困惑,有人可以清楚我的怀疑。 另外,我想知道Thumb规则在什么基础上需要确定映射。

感谢。

1 个答案:

答案 0 :(得分:0)

Seems in your case its better to choose Many - to -Many raltionship. so You will have Permission, Role tables and junk table Permission_Role table. 
try this tutorial: 


  [1]: http://www.mkyong.com/hibernate/hibernate-many-to-many-relationship-example/ 

Are you creating it from database? I can suggest easy ways for mapping...