我有以下类结构:
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 session 中有 User 类的实例。如果我想将新的权限分配添加到权限分配集中,我必须做什么?创建权限分配是否足够,然后创建权限并调用permissionAssignments.add(permission),然后将创建所有必要的行 - 权限分配和权限,或者我是否必须将创建的权限添加到 userAttributes,然后创建权限分配并添加它设置权限分配?那么基本上,当我不将其添加到 userAttributes 集中时,Hibernate 会在数据库中创建权限行吗?
如果不添加权限分配并更新用户时会发生什么? Hibernate 会抛出任何异常来说明为什么没有添加它吗?
最佳答案
在您的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
中的外键。
关于java - 添加子级时,Hibernate 是否自动添加父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350769/