ManyToMany映射包含一些额外的记录

时间:2016-02-08 12:31:55

标签: java hibernate jpa

我们说我有以下模型:

OnChartValueSelectedListener

是否可以映射@Entity public class User { ... @ManyToMany private Set<Permission> allowedPermissions; ... } @Entity public class Permission { ... private boolean isDefault; ... } ,使其包含与User.allowedPermissions连接的Permissions以及与User相关但未明确连接的<{1}}?

我使用Hibernate作为Jpa提供程序。

1 个答案:

答案 0 :(得分:0)

那么这是不可能的,因为你没有足够的关于用户权限的信息。

如果您考虑多对多关系,则在数据库上它是两个其他表之间的关系表。

现在,在您的用户实体中,您正确使用Set来查看此交叉表中存储的所有关系(让我们说user_permission)。但是在这个级别你无法知道默认权限,可以很容易地通过PermissionDAO检索(我假设您使用DAO /服务设计,如果不根据您的需要进行调整)。

如果你想要一个超集(allowedPermissions + defaultPermissions),那么你可以在服务层写一个实用工具方法,如果你愿意:

getAllPermissions(User user) {
   return userDAO.getAllowedPermissions(user).addAll(permissionDAO.getDefaultPermissions()); 
}

为何在服务层?因为您需要同时使用两个DAO,并且您不想将DAO注入另一个DAO。 如果这有用,请告诉我。