用户、角色、权限三者多对多用hibernate的一对多注解配置

时间:2021-02-08 04:22:51

用户、角色、权限三者多对多用hibernate的一对多注解配置

//权限表
@Table(name = "p")
public class P {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "p_id", unique = true, nullable = false)
private Integer id;
@OneToMany(mappedBy = "p",cascade=CascadeType.ALL)
private Set<PR> pr = new HashSet<PR>();
/*省略所有get、set方法及其他列*/
}
//权限角色表
@Entity
@Table(name = "pr")
public class PR {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pr_id", unique = true, nullable = false)
private Integer id;
@ManyToOne
@JoinColumn(name = "r_id")
private R r;
@ManyToOne
@JoinColumn(name = "p_id")
private P p;
/*省略所有get、set方法及其他列*/
}
//角色表
@Entity
@Table(name = "r")
public class R {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "r_id", unique = true, nullable = false)
private Integer id;
@OneToMany(mappedBy = "r",cascade=CascadeType.ALL)
private Set<PR> pr = new HashSet<PR>();
@OneToMany(mappedBy = "r",cascade=CascadeType.ALL)
private Set<RU> ru = new HashSet<RU>();
/*省略所有get、set方法及其他列*/
}
//角色用户关系表
@Entity
@Table(name = "ru")
public class RU {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ru_id", unique = true, nullable = false)
private Integer id;
@ManyToOne
@JoinColumn(name = "r_id")
private R r;
@ManyToOne
@JoinColumn(name = "u_id")
private U u;
/*省略所有get、set方法及其他列*/
}
//用户表
@Entity
@Table(name = "u")
public class U {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "u_id", unique = true, nullable = false)
private Integer id;
@OneToMany(mappedBy = "u",cascade=CascadeType.ALL)
private Set<RU> ru = new HashSet<RU>();
/*省略所有get、set方法及其他列*/
}

数据库图片示例:

用户、角色、权限三者多对多用hibernate的一对多注解配置

结果如上。(P《权限表》、R《角色表》、U《用户表》、PR《权限角色关系表》、RU《角色用户关系表》)