大家好,最近在学习Spring Data Jpa,遇到关于多对多中的问题,想请教大家
我们都知道 用户-角色-权限 是用户-角色多对多 角色-权限多对多如此便有以下实体类:
/** * 描述:用户实体 * @author itbofeng bf1020070755@163.com */ @Data @Entity public class User implements Serializable { @Id @Column(length = 64, nullable = false) private String uid;//用户ID 主键 64位 @Column(length = 64, nullable = false) private String uname;//用户名 非空 64位 @Column(length = 64, nullable = false) private String username;//登录名 非空 64位 @Column(length = 64, nullable = false) private String password;//密码 非空 64位 @Column(length = 64, nullable = true) private String email;//邮箱 可空 64位 @Column(length = 64, nullable = true) private String phone;//电话 可空 64位 @Column(length = 1, nullable = true) private String state;//电话 可空 64位 @ManyToMany(cascade = CascadeType.ALL ,fetch = FetchType.EAGER) @JoinTable(name = "UserRole", joinColumns = { @JoinColumn(name = "uid", referencedColumnName = "uid")}, inverseJoinColumns = { @JoinColumn(name = "rid", referencedColumnName = "rid")}) protected List<Role> roles; } /** * 描述:角色实体 * @author itbofeng bf1020070755@163.com */ @Data @Entity public class Role implements Serializable { @Id @Column(length = 64) private String rid;//角色ID 主键 64位 @Column(length = 64,nullable = false) private String rname;//角色名称 主键 64位 @ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY) private List<User> users; @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinTable(name = "RolePermission", joinColumns = { @JoinColumn(name = "rid", referencedColumnName = "rid")}, inverseJoinColumns = { @JoinColumn(name = "pid", referencedColumnName = "pid")}) private List<Permission> permissions; } /** * 描述:权限实体 * @author itbofeng bf1020070755@163.com */ @Data @Entity public class Permission implements Serializable { @Id @Column(length = 64) private String pid;//权限ID 64位 @Column(length = 64,nullable = false) private String pname;//权限名称 64位 @Column(length = 1,nullable = false) private String type;//权限类别,0菜单,1按钮 1位 @Column(length = 256,nullable = true) private String url;//对应菜单 256位 @Column(length = 64) private String parentId;//权限ID 64位 @ManyToMany(mappedBy = "permissions" ,fetch = FetchType.LAZY) private List<Role> roles; }
现有需求:根据用户名查询出用户的所有信息,包括角色以及角色拥有的权限,用Spring Data Jpa怎么实现呢?
我最初的想法是,先查询出用户,再根据用户ID查询出所有的角色,再根据所有的角色ID查询出所有的权限,然后将角色和权限对应一下就OK了,做到这一步了,忽然发现没有什么字段可以对应?请问各路大神都是怎么操作的呢?
泥巴先生
慕设计2395807
相关分类