2017-08-05 114 views
1

我有一个5个实体,用户,角色,权限的UserRole,PermisssionRoles,我将如何构建一个JPA类使用数据透视表enter image description here高级JPA与数据透视表

公共类角色实现Serializable {

获取数据

// @OneToMany(mappedBy =“role_id”) // private Collection permissionRoleCollection;

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "id") 
private Integer id; 
@Size(max = 100) 
@Column(name = "name") 
private String name; 
@Size(max = 50) 
@Column(name = "code") 
private String code; 
@Size(max = 255) 
@Column(name = "brief") 
private String brief; 
@Size(max = 8) 
@Column(name = "status") 
private String status; 
@Basic(optional = false) 
@NotNull 
@Column(name = "date_created") 
@Temporal(TemporalType.TIMESTAMP) 
private Date dateCreated; 
@Column(name = "date_updated") 
@Temporal(TemporalType.TIMESTAMP) 
private Date dateUpdated; 

@JoinColumn(name = "created_by", referencedColumnName = "id") 
@ManyToOne 
private User createdBy; 
@JoinColumn(name = "updated_by", referencedColumnName = "id") 
@ManyToOne 
private User updatedBy; 

@ManyToOne 
@JoinTable(name = "permission_role", 
     joinColumns = @JoinColumn(name = "userid", 
       referencedColumnName = "userid"), 
     inverseJoinColumns = @JoinColumn(name = "groupid", 
       referencedColumnName = "groupid") 
) 
private Collection<PermissionRole> permissionRoles; 

public Roles() { 
} 

public Roles(Integer id) { 
    this.id = id; 
} 

public Roles(Integer id, Date dateCreated) { 
    this.id = id; 
    this.dateCreated = dateCreated; 
} 

public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getCode() { 
    return code; 
} 

public void setCode(String code) { 
    this.code = code; 
} 

public String getBrief() { 
    return brief; 
} 

public void setBrief(String brief) { 
    this.brief = brief; 
} 

public String getStatus() { 
    return status; 
} 

public void setStatus(String status) { 
    this.status = status; 
} 

public Date getDateCreated() { 
    return dateCreated; 
} 

public void setDateCreated(Date dateCreated) { 
    this.dateCreated = dateCreated; 
} 

public Date getDateUpdated() { 
    return dateUpdated; 
} 

public void setDateUpdated(Date dateUpdated) { 
    this.dateUpdated = dateUpdated; 
} 


public User getCreatedBy() { 
    return createdBy; 
} 

public void setCreatedBy(User createdBy) { 
    this.createdBy = createdBy; 
} 

public User getUpdatedBy() { 
    return updatedBy; 
} 

public void setUpdatedBy(User updatedBy) { 
    this.updatedBy = updatedBy; 
} 


@Override 
public int hashCode() { 
    int hash = 0; 
    hash += (id != null ? id.hashCode() : 0); 
    return hash; 
} 

@Override 
public boolean equals(Object object) { 
    // TODO: Warning - this method won't work in the case the id fields are not set 
    if (!(object instanceof Roles)) { 
     return false; 
    } 
    Roles other = (Roles) object; 
    return !((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))); 
} 

@Override 
public String toString() { 
    return "myproperty.v1.db._entities.Roles[ id=" + id + " ]"; 
} 

}

回答

0

我想你想有许多用户和角色之间,也作用和权限之间的关系很多。如果你会宣布@ManyToMany注释,hibernate会知道要创建一个中间表...

Check this

而且你可以以编程方式创建“内部”表和用户注释@OneToMany到内部和@OneToMany从角色到内在,并与特权相同

+0

这对我工作感谢 –