我有以下类结构:
public class User{
Set<UserAttribute> userAttributes;
}
public class Role implements/extends UserAttribute {
Set<PermissionAssignment> permissionAssignments;
}
public class PermissionAssignment {
Permission permission;
}
public class Permission implements/extends UserAttribute {
}
因此,用户已设置或属性。属性可以是角色或权限。属性存储在同一个表中,我使用鉴别器。然后,角色具有一组权限分配,权限分配具有权限。 假设我在Hibernate会话中有User类的实例。如果我想为权限分配集添加新的权限分配,我该怎么办?是否足以创建权限分配,然后创建权限并调用permissionAssignments.add(权限),然后将创建所有必需的行 - 权限分配和权限,或者我是否必须向userAttributes添加创建的权限,然后创建权限分配并添加它对permissionAssignments设置?所以当我不将它添加到userAttributes集时,Hibernate基本上会在数据库中创建权限行吗?
如果不添加permissionAssignment并更新用户时会发生什么? Hibernate是否会抛出任何显示为什么不添加它的异常?
答案 0 :(得分:0)
在Role
添加一个方法添加PermissionAssignment
,如下所示:
public void addPermissionAssignment(PermissionAssignment permissionAssignment){
if(this.permissionAssigments == null){
this.permissionAssigments = new HashSet<PermissionAssigment>();
}
permissionAssignment.setRole(this);//this will set the parent
this.permissionAssigmentsadd(permissionAssignment);
}
使用上述方法将PermissionAssignment
添加到Role
。
Hibernate会照顾其余部分。即创建Role
并将生成的主键设置为PermissionAssignment
中的外键。