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.*;
@Entity
@Table(name="Customer", catalog="classicmodels")
public class Customer implements java.io.Serializable
{
private static final long serialVersionUID = 1L;
private Integer customerNumber;
private Employee employee;
private String customerName;
private String contactLastName;
private String contactFirstName;
private String phone;
private String addressLine1;
private String addressLine2;
private String city;
private String state;
private String postalCode;
private String country;
private Double creditLimit;
private Set<Payment> payments = new HashSet<Payment>();
private Set<Order> orders = new HashSet<Order>();
public Customer() { }
public Customer(String customerName, String contactLastName, String contactFirstName, String phone, String addressLine1, String city, String country) {
this.customerName = customerName;
this.contactLastName = contactLastName;
this.contactFirstName = contactFirstName;
this.phone = phone;
this.addressLine1 = addressLine1;
this.city = city;
this.country = country;
}
public Customer(Employee employee, String customerName, String contactLastName, String contactFirstName, String phone, String addressLine1, String addressLine2, String city, String state, String postalCode, String country, Double creditLimit, Set<Payment> payments, Set<Order> orders) {
this.employee = employee;
this.customerName = customerName;
this.contactLastName = contactLastName;
this.contactFirstName = contactFirstName;
this.phone = phone;
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.city = city;
this.state = state;
this.postalCode = postalCode;
this.country = country;
this.creditLimit = creditLimit;
this.payments = payments;
this.orders = orders;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="customerNumber", unique=true, nullable=false)
public Integer getCustomerNumber() {
return this.customerNumber;
}
public void setCustomerNumber(Integer customerNumber) {
this.customerNumber = customerNumber;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="salesRepEmployeeNumber")
@JsonBackReference
public Employee getEmployee() {
return this.employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
@Column(name="customerName", nullable=false, length=50)
public String getCustomerName() {
return this.customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
@Column(name="contactLastName", nullable=false, length=50)
public String getContactLastName() {
return this.contactLastName;
}
public void setContactLastName(String contactLastName) {
this.contactLastName = contactLastName;
}
@Column(name="contactFirstName", nullable=false, length=50)
public String getContactFirstName() {
return this.contactFirstName;
}
public void setContactFirstName(String contactFirstName) {
this.contactFirstName = contactFirstName;
}
@Column(name="phone", nullable=false, length=50)
public String getPhone() {
return this.phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Column(name="addressLine1", nullable=false, length=50)
public String getAddressLine1() {
return this.addressLine1;
}
public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
}
@Column(name="addressLine2", length=50)
public String getAddressLine2() {
return this.addressLine2;
}
public void setAddressLine2(String addressLine2) {
this.addressLine2 = addressLine2;
}
@Column(name="city", nullable=false, length=50)
public String getCity() {
return this.city;
}
public void setCity(String city) {
this.city = city;
}
@Column(name="state", length=50)
public String getState() {
return this.state;
}
public void setState(String state) {
this.state = state;
}
@Column(name="postalCode", length=15)
public String getPostalCode() {
return this.postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
@Column(name="country", nullable=false, length=50)
public String getCountry() {
return this.country;
}
public void setCountry(String country) {
this.country = country;
}
@Column(name="creditLimit", precision=22, scale=0)
public Double getCreditLimit() {
return this.creditLimit;
}
public void setCreditLimit(Double creditLimit) {
this.creditLimit = creditLimit;
}
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="customer")
public Set<Order> getOrders() {
return this.orders;
}
public void setOrders(Set<Order> orders) {
this.orders = orders;
}
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="customer")
public Set<Payment> getPayments() {
return this.payments;
}
public void setPayments(Set<Payment> payments) {
this.payments = payments;
}
}