package com.oa.model;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
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.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.hibernate.Hibernate;
import org.hibernate.annotations.Type;
import com.sun.jmx.snmp.Timestamp;
@Entity
@Table(name="oa_person")
public class Person implements Serializable{
private static final long serialVersionUID = -9169062886981751173L;
private Integer id;
private String name;
private String sex;
private Integer age;
private String address;
private String email;
private String phone;
private Date birthday;
private Date hiredate;
private String photoPath;
private Organization organization;
private PersonType personType;
private PersonPosition personPosition;
private Set<Users> users=new HashSet<Users>();
private Users firstUser;
@Id
@GeneratedValue
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@ManyToOne
@JoinColumn(name="orgId", referencedColumnName = "id")
public Organization getOrganization() {
return organization;
}
public void setOrganization(Organization organization) {
this.organization = organization;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@OneToMany(mappedBy="personid",cascade={CascadeType.ALL})
public Set<Users> getUsers() {
return users;
}
public void setUsers(Set<Users> users) {
this.users = users;
}
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Temporal(TemporalType.DATE)
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
@Override
public String toString() {
return "Person [address=" + address + ", age=" + age + ", birthday="
+ birthday + ", email=" + email + ", hiredate=" + hiredate
+ ", id=" + id + ", name=" + name + ", phone=" + phone
+ ", position=" + personPosition + ", sex=" + sex + ", type=" + personType
+ "]";
}
@OneToOne
@JoinColumn(name="personTypeId")
public PersonType getPersonType() {
return personType;
}
public void setPersonType(PersonType personType) {
this.personType = personType;
}
@OneToOne
@JoinColumn(name="personPositionId")
public PersonPosition getPersonPosition() {
return personPosition;
}
public void setPersonPosition(PersonPosition personPosition) {
this.personPosition = personPosition;
}
@Transient
public Users getFirstUser() {
return users.iterator().next();
}
public void setFirstUser(Users firstUser) {
this.firstUser = firstUser;
}
public String getPhotoPath() {
return photoPath;
}
public void setPhotoPath(String photoPath) {
this.photoPath = photoPath;
}
}