Java 具有4个联接表的4个表的JPA实体关系

Java 具有4个联接表的4个表的JPA实体关系,java,hibernate,jpa,eclipselink,hibernate-mapping,Java,Hibernate,Jpa,Eclipselink,Hibernate Mapping,我们有一个使用原生sql查询和JDBC的现有旧java应用程序。我需要使用JPA+eclipselink替换dao层。我已经使用eclipse生成了实体,但我不知道生成的实体是否针对某个特定情况进行了优化。在下图中,我表示了我正在努力处理的表 注意:此应用程序无法编辑表App和Func的内容 应用程序中的管理员可以在ihm中创建角色。角色保存在角色表中。管理员可以通过从应用程序表中加载的列表中选择,将一个或多个应用程序与创建的角色关联。保存时,角色与所选应用程序之间的关系将插入表RoleApp

我们有一个使用原生sql查询和JDBC的现有旧java应用程序。我需要使用JPA+eclipselink替换dao层。我已经使用eclipse生成了实体,但我不知道生成的实体是否针对某个特定情况进行了优化。在下图中,我表示了我正在努力处理的表

注意:此应用程序无法编辑表AppFunc的内容

应用程序中的管理员可以在ihm中创建角色。角色保存在角色表中。管理员可以通过从应用程序表中加载的列表中选择,将一个或多个应用程序与创建的角色关联。保存时,角色与所选应用程序之间的关系将插入表RoleApp

对于每个选定的应用程序,管理员可以使用AppFunc上的连接选择从Func表加载的一个或多个函数。保存时,角色、所选应用程序和应用程序功能之间的关系将插入表RoleFuncApp

最后,管理员可以为每个函数创建一个或多个权限。保存时,权限将插入表Perm,角色、应用程序、功能和创建的权限之间的关系将插入表RoleAppFuncPerm

注意:角色与用户有一对一的关系。应用程序中的每个用户都有管理员指定的角色

生成的实体将用于两种情况。第一种情况是管理员创建或管理上述角色。在这种情况下,通过保存角色,以下表格将被更新角色RoleAppRoleAppFuncRoleAppFuncPermPerm

第二种情况是用户登录应用程序时。根据其角色,用户只能访问附加到其角色的选定应用程序。在每个应用程序中,他只能访问选定的功能,对于每个功能,他只能访问此功能的权限

对于第二种情况,如果我可以在角色中使用java实体a列出应用程序,其中只包含与RoleApp中的用户角色相关的应用程序,我会很高兴。和App.java,其中列表函数仅包含与RoleAppFunc中的角色和应用程序相关的函数。最后,Func.java,其中列出权限,仅包含与roleappfunterm中的角色、应用程序和功能相关的权限。 目标是仅将这些列表用作只读,以管理应用程序中角色的访问、功能和权限

对于第一种情况,我需要一种方法来建立Role.java与表RoleRoleAppRoleAppFuncRoleAppFuncPermPerm的关系。这将允许我在级联中插入/更新/删除角色与(应用程序、功能和权限)之间的关系

当我在第一种情况下执行entityManager.Persiste(role)时,有人知道要在每个java实体中创建哪些关系来进行良好的插入/更新吗

对于第二种情况,最好的JPQL查询是什么(只加载与之相关的应用程序、函数和权限的角色)