为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Data Jpa 多对多之查询问题?

Spring Data Jpa 多对多之查询问题?

泥巴先生 2018-04-05 21:47:29
大家好,最近在学习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了,做到这一步了,忽然发现没有什么字段可以对应?请问各路大神都是怎么操作的呢?
查看完整描述
  • 1 回答
  • 1 关注
  • 3357 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信