java - 添加子级时,Hibernate 是否自动添加父级?

标签 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 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/

相关文章:

java - 无法将字符集 65535 中的字节转换为日语 (5035)

java - 图像文件的加密与解密

hibernate - 在 JHipster 项目中配置 Hibernate 映射

string - 使用Hibernate映射Map <String,String>

java - Hibernate获取列的数据缺失

java - JSF 链接不工作(使用 Primefaces)

java - ADB 无线

hibernate - 对于使用 Spring 和 JDBCTemplates、iBatis/myBatis 或 Hibernate 的新项目?

grails - Grails,遗留数据库中的空值提供了PropertyAccessException

java - 类 : . .. 中的 IllegalArgumentException 属性的 getter 方法:id