0

我是 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个角色可以有很多权限,很多权限可以属于一个角色,所以我认为考虑到这个数字是一对多的关系,

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 的一个角色

所以我认为这是一对多


我也认为它也属于Many-To-Many,考虑到我脑海中的这张图片,

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 的角色

所以我认为它是多对一的

我真的很困惑如何判断映射,有人可以解决我的疑问。另外,我想知道拇指规则在什么基础上需要决定映射。

谢谢。

4

1 回答 1

0
在您的情况下,似乎最好选择多对多关系。所以您将拥有权限、角色表和垃圾表 Permission_Role 表。
试试这个教程:


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

你是从数据库创建它吗?我可以建议简单的映射方法...
于 2012-10-01T06:27:52.653 回答