ITPub博客

首页 > 应用开发 > > Spring Data Jpa 多对多之查询问题?

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

作者:gamebus 时间:2019-07-25 14:48:04 0 删除 编辑

大家好,最近在学习Spring Data Jpa,遇到关于多对多中的问题,想请教大家

我们都知道 用户-角色-权限 是用户-角色多对多  角色-权限多对多如此便有以下实体类:

/**

 * 描述:用户实体

 * @author itbofeng bf1020070755@163.com

 */

@Data

@Entity

publicclassUser implementsSerializable {

    @Id

    @Column(length = 64, nullable = false)

    privateString uid;//用户ID 主键 64位

    @Column(length = 64, nullable = false)

    privateString uname;//用户名 非空 64位

    @Column(length = 64, nullable = false)

    privateString username;//登录名 非空 64位

    @Column(length = 64, nullable = false)

    privateString password;//密码 非空 64位

    @Column(length = 64, nullable = true)

    privateString email;//邮箱 可空 64位

    @Column(length = 64, nullable = true)

    privateString phone;//电话 可空 64位

    @Column(length = 1, nullable = true)

    privateString state;//电话 可空 64位

    @ManyToMany(cascade = CascadeType.ALL ,fetch = FetchType.EAGER)

    @JoinTable(name = "UserRole", joinColumns = {

    @JoinColumn(name = "uid", referencedColumnName = "uid")}, inverseJoinColumns = {

    @JoinColumn(name = "rid", referencedColumnName = "rid")})

    protectedList<Role> roles;

}

 

/**

 * 描述:角色实体

 * @author itbofeng bf1020070755@163.com

 */

@Data

@Entity

publicclassRole implementsSerializable {

    @Id

    @Column(length = 64)

    privateString rid;//角色ID 主键 64位

    @Column(length = 64,nullable = false)

    privateString rname;//角色名称 主键 64位

    @ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY)

    privateList<User> users;

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)

    @JoinTable(name = "RolePermission", joinColumns = {

            @JoinColumn(name = "rid", referencedColumnName = "rid")}, inverseJoinColumns = {

            @JoinColumn(name = "pid", referencedColumnName = "pid")})

    privateList<Permission> permissions;

}

/**

 * 描述:权限实体

 * @author itbofeng bf1020070755@163.com

 */

@Data

@Entity

publicclassPermission implementsSerializable {

    @Id

    @Column(length = 64)

    privateString pid;//权限ID 64位

    @Column(length = 64,nullable = false)

    privateString pname;//权限名称 64位

    @Column(length = 1,nullable = false)

    privateString type;//权限类别,0菜单,1按钮 1位

    @Column(length = 256,nullable = true)

    privateString url;//对应菜单  256位

    @Column(length = 64)

    privateString parentId;//权限ID 64位

    @ManyToMany(mappedBy = "permissions",fetch = FetchType.LAZY)

    privateList<Role> roles;

}

现有需求:根据用户名查询出用户的所有信息,包括角色以及角色拥有的权限,用Spring Data Jpa怎么实现呢?

我最初的想法是,先查询出用户,再根据用户ID查询出所有的角色,再根据所有的角色ID查询出所有的权限,然后将角色和权限对应一下就OK了,做到这一步了,忽然发现没有什么字段可以对应?请问各路大神都是怎么操作的呢?

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4687/viewspace-3143376/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-10

  • 博文量
    155
  • 访问量
    13184