三个表company、department、staff。
员工表中的公司ID和部门ID为外键。
company的Model:
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Entity
@Table(name = "t_company", catalog = "smartmgr")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "COMPANY_TYPE")
@DiscriminatorValue("Others")
public class TCompany implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = -1518840460031368116L;
private String id;
private String comFullName;
private String comSimpleName;
private CompanyType companyType;
private Set<TCompanyDirectory> companyDirectories =new HashSet<TCompanyDirectory>(0);
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "ID", unique = true, nullable = false, length = 32)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "COM_FULL_NAME", length = 128)
public String getComFullName() {
return comFullName;
}
public void setComFullName(String comFullName) {
this.comFullName = comFullName;
}
@Column(name = "COM_ABBR_NAME", length = 64)
public String getComSimpleName() {
return comSimpleName;
}
public void setComSimpleName(String comSimpleName) {
this.comSimpleName = comSimpleName;
}
@Column(name = "COM_TYPE", length = 32)
public CompanyType getCompanyType() {
return companyType;
}
public void setCompanyType(CompanyType companyType) {
this.companyType = companyType;
}
@OneToMany(cascade = CascadeType.MERGE, mappedBy = "company")
public Set<TCompanyDirectory> getCompanyDirectories() {
return companyDirectories;
}
public void setCompanyDirectories(Set<TCompanyDirectory> companyDirectories) {
this.companyDirectories = companyDirectories;
}
@OneToMany(cascade = CascadeType.MERGE, mappedBy = "company")
public List<TDepartment> getDepartments() {
return departments;
}
public void setDepartments(List<TDepartment> departments) {
this.departments = departments;
}
}
Department的Model
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Entity
@Table(name = "t_depantment", catalog = "smartmgr")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DEPARTMENT_TYPE")
public class TDepartment implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String name;
private TCompany company;
private TDepartment department;
private Set<TCompanyDirectory> companyDirectories=new HashSet<TCompanyDirectory>(0);
public TDepartment() {
super();
// TODO Auto-generated constructor stub
}
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "ID", unique = true, nullable = false, length = 32)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "NAME", length = 32)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setCompany(TCompany company) {
this.company = company;
}
@OneToMany(cascade = CascadeType.MERGE, mappedBy = "department")
public Set<TCompanyDirectory> getCompanyDirectories() {
return companyDirectories;
}
public void setCompanyDirectories(Set<TCompanyDirectory> companyDirectories) {
this.companyDirectories = companyDirectories;
}
}
Staff的Model:
package com.smartprint.biztrip.common.model.company;
//import java.util.ArrayList;
import java.util.Date;
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.Table;
import org.hibernate.annotations.GenericGenerator;
import com.smartprint.biztrip.common.model.department.TDepartment;
//import com.smartprint.biztrip.common.model.company.TCompany;
//import com.smartprint.biztrip.common.model.department.TDepartment;
@Entity
@Table(name = "t_company_directory", catalog = "smartmgr")
//@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class TCompanyDirectory implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = -5215402565270755971L;
// 基本信息
private String id;
private String name;// 员工姓名
private Date birth;// 出生日期
private String sex;
private String mobilePhone;// 联系电话
private String email;// 邮箱
private String nationality;// 国籍
private String jobTitle;// 职务
private String spellName;// 姓名拼音
private String passportNumber;// 护照号
private String identityNumber;// 身份证号码
private String otherIdCardType;// 其它证件
private String otherIdCardNum;// 其它证件号码
// 紧急联系人
private String emergencyName;// 员工紧急联系人
private String emergencyPhone;// 员工紧急联系电话
private TCompany company; // 雇佣公司ID
private TDepartment department; // 雇佣部门ID
// private TStaff createStaff;// 添加员工
// private TStaff updateStaff;// 更新员工
// private TCompany companyID;// 公司ID
// private TDepartment departmentID;// 所属部门ID
// private List<TStaff> createStaffs = new ArrayList<TStaff>();
// private List<TStaff> updateStaffs = new ArrayList<TStaff>();
public TCompanyDirectory() {
super();
}
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "ID", unique = true, nullable = false, length = 32)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "NAME", length = 64)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "SEX", length = 8)
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Column(name = "MOBILE_PHONE", length = 32)
public String getMobilePhone() {
return mobilePhone;
}
public void setMobilePhone(String mobilePhone) {
this.mobilePhone = mobilePhone;
}
@Column(name = "EAMIL", length = 64)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(name = "NATIONALITY", length = 6)
public String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
@Column(name = "SPELL_NAME", length = 64)
public String getSpellName() {
return spellName;
}
public void setSpellName(String spellName) {
this.spellName = spellName;
}
@Column(name = "PASSPORT_NUM", length = 32)
public String getPassportNumber() {
return passportNumber;
}
public void setPassportNumber(String passportNumber) {
this.passportNumber = passportNumber;
}
@Column(name = "ID_CARD_NUM", length = 32)
public String getIdentityNumber() {
return this.identityNumber;
}
public void setIdentityNumber(String identityNumber) {
this.identityNumber = identityNumber;
}
@Column(name = "EMERGENCY_NAME", length = 64)
public String getEmergencyName() {
return emergencyName;
}
public void setEmergencyName(String emergencyName) {
this.emergencyName = emergencyName;
}
@Column(name = "EMERGENCY_PHONE", length = 32)
public String getEmergencyPhone() {
return emergencyPhone;
}
public void setEmergencyPhone(String emergencyPhone) {
this.emergencyPhone = emergencyPhone;
}
@Column(name = "BIRTH", length = 19)
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
@Column(name = "JOB_TITLE", length = 64)
public String getJobTitle() {
return jobTitle;
}
public void setJobTitle(String jobTitle) {
this.jobTitle = jobTitle;
}
@Column(name = "OTHER_ID_TYPE", length = 64)
public String getOtherIdCardType() {
return otherIdCardType;
}
public void setOtherIdCardType(String otherIdCardType) {
this.otherIdCardType = otherIdCardType;
}
@Column(name = "OTHER_ID_NUM", length = 32)
public String getOtherIdCardNum() {
return otherIdCardNum;
}
public void setOtherIdCardNum(String otherIdCardNum) {
this.otherIdCardNum = otherIdCardNum;
}
@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
@JoinColumn(name = "EMP_DEPT_ID")
public TDepartment getDepartment() {
return department;
}
public void setDepartment(TDepartment department) {
this.department = department;
}
@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
@JoinColumn(name = "EMP_COM_ID")
public TCompany getCompany() {
return company;
}
public void setCompany(TCompany company) {
this.company = company;
}
}