User由于和之间没有直接关系Permission,因此User没有permList集合属性是正确的。
假设您的 IDE 已根据您的表正确创建了实体,那么您的类中没有ManyToMany注释,而只有OneToMany和ManyToOne. 这使得获取权限集合有点麻烦:
String userName = "";
User myUser = entityManager.find(User.class, userName);
for (UserRoleRels urr : myUser.getUserRoleRelsList()) {
Role r = urr.getRole();
for(RolePermRels rpr : r.getRolePermRelsList()) {
Permission p = rpr.getPermission();
}
}
如果您在 ManyToMany 关系表中没有额外的属性(在您的情况下User_role_rels和Role_perm_rels),您可以删除两者的 PK 字段。这将使您的 IDE:(1) 创建更简单的实体类,(2) 避免为关系表创建实体类,(3) 使用ManyToMany注释。通过该更改,您将能够更轻松地以更易读的方式访问权限:
String userName = "";
User myUser = entityManager.find(User.class, userName);
for (Role r : myUser.getRoleList()) {
List<Permission> pl = r.getPermissionList();
}
有用的链接:EclipseLink 用户指南、JPA Wikibooks。