一个用户Permission可以包含多个子权限, 除了root权限以外,每个权限都有一个父权限。
表结构:
create table permission (
id int not null,
name varchar(45) not null unique,
value varchar(45) not null,
parent_id int
primary key(id)
);
Java代码:
package com.management.entity;
import static javax.persistence.GenerationType.AUTO;
import java.util.List;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="Permission")
public class Permission {
@Id
@GeneratedValue(strategy=AUTO)
@Column(name = "id", unique = true, nullable = false)
private int id;
private String name;
private String value;
@ManyToOne
@JoinColumn(name="parent_id")
private Permission parent;
@OneToMany(fetch = FetchType.EAGER,mappedBy="parent")
private List<Permission> children;
/* @ManyToMany(mappedBy="perms")
private Set<Role> roles; */
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
/* public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}*/
public List<Permission> getChildren() {
return children;
}
public void setChildren(List<Permission> children) {
this.children = children;
}
}