package com.hibernate.ano.self;
import java.util.Set;
import javax.persistence.CascadeType;
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.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import com.infohold.icqm.db.dbo.Organization;
/**
* @ClassName: Group.java
*
* @Description: 用户组
*
* @author GERRARD
*
* @date 2015年1月26日下午2:22:24
*
*/
@Entity
@Table(name = "group")
public class Group implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = -8694664905284095892L;
/**
* 主键ID
*/
private String pid;
/**
* 组名
*/
private String groupName;
/**
* 父类(自身 Many-to-One)
*/
private Group parentGroup;
/**
* 子集(自身 One-to-Many)
*/
private Set<Group> childGroup;
/**
* 所属机构下用户
*/
private Set<Users> users;
public Group() {
}
public Group(String pid, String groupName, Group parentGroup,
Set<Group> childGroup) {
this.pid = pid;
this.groupName = groupName;
this.parentGroup = parentGroup;
this.childGroup = childGroup;
}
@Id
@Column(name = "pid", unique = true, nullable = false, length = 32)
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "uuid")
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
@Column(name = "group_name", length = 64)
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
@ManyToOne
@JoinColumn(name = "parent_id")
public Group getParentGroup() {
return parentGroup;
}
public void setParentGroup(Group parentGroup) {
this.parentGroup = parentGroup;
}
@OneToMany(mappedBy = "parentGroup", targetEntity = Organization.class, cascade = CascadeType.ALL)
public Set<Group> getChildGroup() {
return childGroup;
}
public void setChildGroup(Set<Group> childGroup) {
this.childGroup = childGroup;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "group")
@NotFound(action = NotFoundAction.IGNORE)
public Set<Users> getUsers() {
return users;
}
public void setUsers(Set<Users> users) {
this.users = users;
}
}
package com.hibernate.ano.self;
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.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "users")
public class Users implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1668563130071655650L;
/**
* 主键ID
*/
private String pid;
/**
* 用户ID
*/
private String userId;
/**
* 用户名
*/
private String userName;
/**
* 所属机构
*/
private Group group;
public Users() {
}
public Users(String pid, String userId, String userName, Group group) {
this.pid = pid;
this.userId = userId;
this.userName = userName;
this.group = group;
}
@Id
@Column(name = "pid", unique = true, nullable = false, length = 32)
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "uuid")
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
@Column(name = "user_id", length = 20)
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name = "user_name", length = 64)
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "group_id")
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
}