Employee
package com.imooc.domain;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@Entity
public class Employee {
@Id
private Integer id;
private String name;
private long salary;
@Temporal(TemporalType.DATE)
private Date startdate;
@OneToOne
private Address address;
@OneToMany(mappedBy="employee")
private Collection<Phone> phones = new ArrayList<Phone>();
@ManyToOne
private Department dept;
@ManyToOne
private Employee manager;
@OneToMany(mappedBy="manager")
private Collection<Employee> directs = new ArrayList<Employee>();
@ManyToMany(mappedBy="employees")
private Collection<Project> projects = new ArrayList<Project>();
//private Project project;
public Employee() {}
public Employee(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer empNo) {
this.id = empNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getSalary() {
return salary;
}
public void setSalary(long salary) {
this.salary = salary;
}
public Date getStartdate() {
return startdate;
}
public void setStartdate(Date startdate) {
this.startdate = startdate;
}
public Collection<Phone> getPhones() {
return phones;
}
public void addPhone(Phone phone) {
if (!getPhones().contains(phone)) {
getPhones().add(phone);
if (phone.getEmployee() != null) {
phone.getEmployee().getPhones().remove(phone);
}
phone.setEmployee(this);
}
}
public Department getDept() {
return dept;
}
public void setDept(Department dept) {
if (this.dept != null) {
this.dept.getEmployees().remove(this);
}
this.dept = dept;
this.dept.getEmployees().add(this);
}
public Collection<Employee> getDirects() {
return directs;
}
public void addDirect(Employee employee) {
if (!getDirects().contains(employee)) {
getDirects().add(employee);
if (employee.getManager() != null) {
employee.getManager().getDirects().remove(employee);
}
employee.setManager(this);
}
}
public Employee getManager() {
return manager;
}
public void setManager(Employee manager) {
this.manager = manager;
}
public Collection<Project> getProjects() {
return projects;
}
public void addProject(Project project) {
if (!getProjects().contains(project)) {
getProjects().add(project);
}
if (!project.getEmployees().contains(this)) {
project.getEmployees().add(this);
}
}
// public Project getProject() { return project; }
// public void setProject(Project aProject) { project = aProject; }
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String toString() {
return "Employee " + getId() +
": name: " + getName() +
", salary: " + getSalary() +
", city: " + ((getAddress() == null) ? null : getAddress().getCity()) +
", deptName: " + ((getDept() == null) ? null : getDept().getName());
}
}
Department
package com.imooc.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.HashSet;
import java.util.Set;
@Entity
public class Department {
@Id
private int id;
private String name;
@OneToMany(mappedBy="dept")
private Set<Employee> employees = new HashSet<Employee>();
public Department() {}
public int getId() {
return id;
}
public void setId(int deptNo) {
this.id = deptNo;
}
public String getName() {
return name;
}
public void setName(String deptName) {
this.name = deptName;
}
public Set<Employee> getEmployees() {
return employees;
}
public String toString() {
return "Department no: " + getId() +
", name: " + getName();
}
}
Address
package com.imooc.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Address {
@Id
private int id;
private String street;
private String city;
private String state;
private String zip;
public Address() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStreet() {
return street;
}
public void setStreet(String address) {
this.street = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String toString() {
return "Address id: " + getId() +
", street: " + getStreet() +
", city: " + getCity() +
", state: " + getState() +
", zip: " + getZip();
}
}
Phone
package com.imooc.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Phone {
@Id
private long id;
private String number;
private String type;
@OneToOne Employee employee;
public Phone() {}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String phoneNo) {
this.number = phoneNo;
}
public String getType() {
return type;
}
public void setType(String phoneType) {
this.type = phoneType;
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public String toString() {
return "Phone id: " + getId() +
", no: " + getNumber() +
", type: " + getType();
}
}