package com.alibaba.json.demo.hibernate.data;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import static javax.persistence.GenerationType.IDENTITY;
import com.fasterxml.jackson.annotation.JsonManagedReference;
@SuppressWarnings("serial")
@Entity
@Table(name="Employee"
,catalog="classicmodels"
)
public class Employee implements java.io.Serializable
{
private Integer employeeNumber;
private Office office;
private String lastName;
private String firstName;
private String extension;
private String email;
private Integer reportsTo;
private String jobTitle;
private Set<Customer> customers = new HashSet<Customer>();
public Employee() { }
public Employee(Office office, String lastName, String firstName, String extension, String email, String jobTitle) {
this.office = office;
this.lastName = lastName;
this.firstName = firstName;
this.extension = extension;
this.email = email;
this.jobTitle = jobTitle;
}
public Employee(Office office, String lastName, String firstName, String extension, String email, Integer reportsTo, String jobTitle, Set<Customer> customers) {
this.office = office;
this.lastName = lastName;
this.firstName = firstName;
this.extension = extension;
this.email = email;
this.reportsTo = reportsTo;
this.jobTitle = jobTitle;
this.customers = customers;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="employeeNumber", unique=true, nullable=false)
public Integer getEmployeeNumber() {
return this.employeeNumber;
}
public void setEmployeeNumber(Integer employeeNumber) {
this.employeeNumber = employeeNumber;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="officeCode", nullable=false)
public Office getOffice() {
return this.office;
}
public void setOffice(Office office) {
this.office = office;
}
@Column(name="lastName", nullable=false, length=50)
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column(name="firstName", nullable=false, length=50)
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name="extension", nullable=false, length=10)
public String getExtension() {
return this.extension;
}
public void setExtension(String extension) {
this.extension = extension;
}
@Column(name="email", nullable=false, length=100)
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(name="reportsTo")
public Integer getReportsTo() {
return this.reportsTo;
}
public void setReportsTo(Integer reportsTo) {
this.reportsTo = reportsTo;
}
@Column(name="jobTitle", nullable=false, length=50)
public String getJobTitle() {
return this.jobTitle;
}
public void setJobTitle(String jobTitle) {
this.jobTitle = jobTitle;
}
@JsonManagedReference
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="employee")
public Set<Customer> getCustomers() {
return this.customers;
}
public void setCustomers(Set<Customer> customers) {
this.customers = customers;
}
}