Create Ticket Entity

In this lesson, we'll build the Ticket entity, which represents a purchased ticket for an event.

Create the Ticket Entity

A ticket is a record of a purchase that gives someone access to an event. Each ticket needs to track its status, who bought it, and what type of ticket it is.

Let's create our Ticket class:

@Entity @Table(name = "tickets") @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder public class Ticket { @Id @Column(name = "id", nullable = false, updatable = false) @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "status", nullable = false) @Enumerated(EnumType.STRING) private TicketStatusEnum status; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ticket_type_id") private TicketType ticketType; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "purchaser_id") private User purchaser; // TODO: Validation // TODO: QrCode @CreatedDate @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; @LastModifiedDate @Column(name = "updated_at", nullable = false) private LocalDateTime updatedAt; }

Update the Ticket Type Entity

We also need to update our TicketType class to include the inverse relationship:

@Entity @Table(name = "ticket_types") @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder public class TicketType { @Id @Column(name = "id", nullable = false, updatable = false) @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name", nullable = false) private String name; @Column(name = "price", nullable = false) private Double price; @Column(name = "total_available") private Integer totalAvailable; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "event_id") private Event event; @OneToMany(mappedBy = "ticketType", cascade = CascadeType.ALL) private List<Ticket> tickets = new ArrayList<>(); @CreatedDate @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; @LastModifiedDate @Column(name = "updated_at", nullable = false) private LocalDateTime updatedAt; }

Summary

  • Created Ticket class to model a ticket to an event
  • Added tickets reference to the TicketType class
© 2026 Devtiro Ltd. All rights reserved