Java Hibernate中多层多对多关系的处理
我有三个实体:Java Hibernate中多层多对多关系的处理,java,hibernate,orm,Java,Hibernate,Orm,我有三个实体: 使用者 角色,以及 对 每个用户都有几个角色,每个角色都有几个权限。类定义如下所示: @Entity @Table(name="...") public class User { ... @ManyToMany @JoinTable(...) private List<Role> UserRoles; } ... @Entity @Table(name="...") public class Role{ ...
用户
都有几个角色
,每个角色
都有几个权限
。类定义如下所示:
@Entity
@Table(name="...")
public class User {
...
@ManyToMany
@JoinTable(...)
private List<Role> UserRoles;
}
...
@Entity
@Table(name="...")
public class Role{
...
@ManyToMany
@JoinTable(...)
private List<Right> RoleRights;
}
我也做了(2)类似的工作,即填充角色的中间列表,以获得用户和权限之间的关系。我想知道这是一个好的实践,还是有更有效的方法来完成任务。是的,Spring Security中已经实现了逻辑。在每个实体中都应该有双向映射。
// 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;
}
...
<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>