Java 要包含一些额外记录的多个映射
假设我有以下模型:Java 要包含一些额外记录的多个映射,java,hibernate,jpa,Java,Hibernate,Jpa,假设我有以下模型: @Entity public class User { ... @ManyToMany private Set<Permission> allowedPermissions; ... } @Entity public class Permission { ... private boolean isDefault; ... } @实体 公共类用户{ ... @许多 私有设置允许的权限;
@Entity
public class User {
...
@ManyToMany
private Set<Permission> allowedPermissions;
...
}
@Entity
public class Permission {
...
private boolean isDefault;
...
}
@实体
公共类用户{
...
@许多
私有设置允许的权限;
...
}
@实体
公共类许可{
...
私有布尔值是默认值;
...
}
是否可以映射User.allowedPermissions
,使其既包含连接到User
的权限
,也包含那些具有isDefault=true
但未显式连接的权限
我使用Hibernate作为Jpa提供程序。这是不可能的,因为您没有足够的关于用户权限的信息 如果您考虑多对多关系,那么在数据库上,它是两个其他表之间的关系表 现在,在您的用户实体中,您正确地使用了一个集合来查看存储在这个交叉表中的所有关系(比如User_permission)。但是在这个级别上,您无法知道默认权限,这些权限可以通过PermissionDAO非常容易地检索到(我假设您使用的是DAO/服务设计,如果不根据需要进行调整的话) 如果您想要一个超集(allowedPermissions+defaultPermissions),那么您可以在服务层编写一个实用程序方法,如果您愿意:
getAllPermissions(User user) {
return userDAO.getAllowedPermissions(user).addAll(permissionDAO.getDefaultPermissions());
}
为什么在服务层?因为您同时需要两个DAO,并且不希望将一个DAO注入另一个DAO。
让我知道这是否有用。在创建用户时,您可以将默认权限添加到任何显式选择的权限,以便它们将存在于联接表中。