大家好,最近在学习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 回答
添加回答
举报
0/150
提交
取消