Hibernate在添加子项时是否自动添加父项?

时间:2012-11-12 20:09:23

标签: java hibernate hibernate-mapping

我有以下类结构:

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是否会抛出任何显示为什么不添加它的异常?

1 个答案:

答案 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中的外键。