content: package com.alibaba.json.demo.hibernate.data;
  
  import java.util.Date;
  
  import javax.persistence.AttributeOverride;
  import javax.persistence.AttributeOverrides;
  import javax.persistence.Column;
  import javax.persistence.EmbeddedId;
  import javax.persistence.Entity;
  import javax.persistence.FetchType;
  import javax.persistence.JoinColumn;
  import javax.persistence.ManyToOne;
  import javax.persistence.Table;
  
  import com.fasterxml.jackson.annotation.JsonIgnore;
  import com.fasterxml.jackson.annotation.JsonTypeInfo;
  
  @SuppressWarnings("serial")
  @Entity
  @Table(name = "Payment", catalog = "classicmodels")
  @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@type")
  public class Payment implements java.io.Serializable
  {
      private PaymentId id;
      private Customer customer;
      private Date paymentDate;
      private double amount;
  
      public Payment() { }
  
      public Payment(PaymentId id, Customer customer, Date paymentDate,
              double amount) {
          this.id = id;
          this.customer = customer;
          this.paymentDate = paymentDate;
          this.amount = amount;
      }
  
          @EmbeddedId
          @AttributeOverrides({
                          @AttributeOverride(name = "customerNumber", column = @Column(name = "customerNumber", nullable = false)),
                          @AttributeOverride(name = "checkNumber", column = @Column(name = "checkNumber", nullable = false, length = 50)) })
          public PaymentId getId() {
                  return this.id;
          }
  
          public void setId(PaymentId id) {
                  this.id = id;
          }
  
          @ManyToOne(fetch = FetchType.LAZY)
          @JoinColumn(name = "customerNumber", nullable = false, insertable = false, updatable = false)
          @JsonIgnore
          public Customer getCustomer() {
                  return this.customer;
          }
  
          public void setCustomer(Customer customer) {
                  this.customer = customer;
          }
  
          @Column(name = "paymentDate", nullable = false, length = 19)
          public Date getPaymentDate() {
                  return this.paymentDate;
          }
  
          public void setPaymentDate(Date paymentDate) {
                  this.paymentDate = paymentDate;
          }
  
          @Column(name = "amount", nullable = false, precision = 22, scale = 0)
          public double getAmount() {
                  return this.amount;
          }
  
          public void setAmount(double amount) {
                  this.amount = amount;
          }
  }
  