簡體   English   中英

在Hibernate中處理多層多對多關系

[英]Handling multi-layer many-to-many relationship in Hibernate

我有三個實體:

  1. 用戶
  2. 角色,以及

每個User都有多個Roles ,每個Role具有多個Right 類的定義如下:

@Entity
@Table(name="...")
public class User {
    ...        
    @ManyToMany
    @JoinTable(...)
    private List<Role> UserRoles; 
}
...
@Entity
@Table(name="...")
public class Role{
    ...        
    @ManyToMany
    @JoinTable(...)
    private List<Right> RoleRights; 
}

我要執行以下兩個任務:

  1. 顯示每個用戶的權限。
  2. 按用戶權限搜索用戶。

目前,我已經通過以下方式實現了(1):

// some method in the data access layer
public List<User> GetUser(){
    ...
    userList = (List<User>) someHibernateCriteria.list();
    if(userList != null && userList.size() > 0)
    {
        for(User user : userList)
        {
            Hibernate.initialize(user.getUserRoles());
            for(Role role : user.getUserRoles())
            {
                Hibernate.initialize(role.getRoleRights());
            }
        }
    }

    return userList;
}
...

顯示jsp代碼,循環userList並將每個user放在html table row

<td>
    ${user.stringDescription}
</td>
<td>
    <ul>
    <c:forEach items="${user.userRoles}" var="role">
        <c:forEach items="${role.roleRights}" var="right">
            <li>${right.stringDescription}</li>
        </c:forEach>
    </c:forEach>
    </ul>
</td>

而且我也類似地做(2),即填充中間的角色列表以獲取用戶和權限之間的關系。 我想知道這是一個好習慣還是有一種更有效的方法來完成任務。

是的,Spring Security中已經實現了邏輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM