Ticket.java

  1. package org.myorg.jpatickets.bo;

  2. import java.io.Serializable;
  3. import java.math.BigDecimal;

  4. import javax.persistence.*;

  5. @SuppressWarnings("serial")
  6. @Entity
  7. @Table(name="JPATICKETS_TICKET")
  8. @NamedQueries({
  9.     @NamedQuery(name="JPATicketTicket.findTickets",
  10.         query="select t from Ticket t where t.seat in :seats")
  11. })
  12. @IdClass(TicketPK.class)
  13. public class Ticket implements Serializable {
  14.     @Id
  15.     @ManyToOne(fetch=FetchType.EAGER, optional=false)
  16.     @JoinColumn(name="EVENT_ID")
  17.     private Event event;
  18.    
  19.     @Id
  20.     @OneToOne(
  21.             //fetch=FetchType.EAGER,
  22.             fetch=FetchType.LAZY,
  23.             optional=false)
  24.     @JoinColumns({
  25.         @JoinColumn(name="VENUE_ID"),
  26.         @JoinColumn(name="SECTION"),
  27.         @JoinColumn(name="ROW"),
  28.         @JoinColumn(name="POSITION"),
  29.     })
  30.     private Seat seat;
  31.    
  32.     @Column(name="PRICE", precision=7, scale=2)
  33.     private BigDecimal price;
  34.    
  35.     @Column(name="SOLD", nullable=false)
  36.     private boolean sold;

  37.     protected Ticket() {}    
  38.     public Ticket(Event event, Seat seat) {
  39.         this.event = event;
  40.         this.seat = seat;
  41.     }

  42.     public Event getEvent()   { return event; }
  43.     public Seat getSeat()     { return seat; }
  44.    
  45.     public BigDecimal getPrice() { return price; }
  46.     public void setPrice(BigDecimal price) {
  47.         this.price = price;
  48.     }
  49.    
  50.     public boolean isSold() { return sold; }
  51.     public void setSold(boolean sold) {
  52.         this.sold = sold;
  53.     }
  54.    
  55.     @Override
  56.     public String toString() {
  57.         StringBuilder builder = new StringBuilder();
  58.         builder.append("Ticket [event=").append(event)
  59.                 .append(", seat=").append(seat)
  60.                 .append(", price=").append(price)
  61.                 .append(", sold=").append(sold)
  62.                 .append("]");
  63.         return builder.toString();
  64.     }
  65.    
  66.    
  67. }