Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA实体中的多对多关系_Jpa_Many To Many - Fatal编程技术网

JPA实体中的多对多关系

JPA实体中的多对多关系,jpa,many-to-many,Jpa,Many To Many,我有5张桌子: 用户: 用户名(PK) 角色: 角色id(主键) 角色名称 权限: perm_id(PK) perm_名称 用户角色关系: 您的id(主键) 用户名(FK)->user.username role\u id(FK)->role.role\u id 角色关系: rp_id(PK) 角色id(FK)->角色。角色id perm\u id(FK)->Permissions.perm\u id 当我为这五个表创建JPA实体时,我得到了用户实体中的UserRoleReles列表,但我需要该

我有5张桌子:

用户: 用户名(PK)

角色: 角色id(主键)
角色名称

权限: perm_id(PK)
perm_名称

用户角色关系: 您的id(主键)
用户名(FK)->user.username
role\u id(FK)->role.role\u id

角色关系: rp_id(PK)
角色id(FK)->角色。角色id
perm\u id(FK)->Permissions.perm\u id

当我为这五个表创建JPA实体时,我得到了用户实体中的UserRoleReles列表,但我需要该用户的权限列表。所以,应该有一个 列出用户实体中的列表


我是JPA新手,不知道如何使用注释实现这一点?

由于
用户
权限
之间没有直接关系,因此
用户
没有
permList
集合属性是正确的

假设IDE已根据表正确创建实体,则类中没有
manytomy
注释,只有
OneToMany
manytomone
。这使得获取权限集合有点麻烦:

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();
    }
}

如果在许多关系表中没有额外的属性(在您的案例中是
User\u role\u rels
role\u perm\u rels
),您可以删除这两个表的PK字段。这将允许您的IDE:(1)创建更简单的实体类,(2)避免为关系表创建实体类,(3)使用
manytomy
注释。通过该更改,您将能够以更容易阅读的方式访问权限:

String userName = "";
User myUser = entityManager.find(User.class, userName);
for (Role r : myUser.getRoleList()) {
    List<Permission> pl = r.getPermissionList();
}
String userName=”“;
User myUser=entityManager.find(User.class,用户名);
对于(角色r:myUser.getRoleList()){
List pl=r.getPermissionList();
}
有用的链接: