Ticket.java
package org.myorg.jpatickets.bo;
import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity
@Table(name="JPATICKETS_TICKET")
@NamedQueries({
@NamedQuery(name="JPATicketTicket.findTickets",
query="select t from Ticket t where t.seat in :seats")
})
@IdClass(TicketPK.class)
public class Ticket implements Serializable {
@Id
@ManyToOne(fetch=FetchType.EAGER, optional=false)
@JoinColumn(name="EVENT_ID")
private Event event;
@Id
@OneToOne(
//fetch=FetchType.EAGER,
fetch=FetchType.LAZY,
optional=false)
@JoinColumns({
@JoinColumn(name="VENUE_ID"),
@JoinColumn(name="SECTION"),
@JoinColumn(name="ROW"),
@JoinColumn(name="POSITION"),
})
private Seat seat;
@Column(name="PRICE", precision=7, scale=2)
private BigDecimal price;
@Column(name="SOLD", nullable=false)
private boolean sold;
protected Ticket() {}
public Ticket(Event event, Seat seat) {
this.event = event;
this.seat = seat;
}
public Event getEvent() { return event; }
public Seat getSeat() { return seat; }
public BigDecimal getPrice() { return price; }
public void setPrice(BigDecimal price) {
this.price = price;
}
public boolean isSold() { return sold; }
public void setSold(boolean sold) {
this.sold = sold;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Ticket [event=").append(event)
.append(", seat=").append(seat)
.append(", price=").append(price)
.append(", sold=").append(sold)
.append("]");
return builder.toString();
}
}