Create Qr Code Entity

In this lesson, we'll create the QR code entity which represents a unique QR code associated with a ticket.

QR codes are a key part of our ticketing system, allowing for quick and reliable ticket validation at events.

Create the QR Code Entity

Here's the complete implementation of the QrCode class:

@Entity @Table(name = "qr_codes") @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder public class QrCode { @Id @Column(name = "id", nullable = false, updatable = false) @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "status", nullable = false) @Enumerated(EnumType.STRING) private QrCodeStatusEnum status; @Column(name = "value", nullable = false) private String value; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ticket_id") private Ticket ticket; @CreatedDate @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; @LastModifiedDate @Column(name = "updated_at", nullable = false) private LocalDateTime updatedAt; }

Updating the Ticket Entity

To complete the relationship between tickets and QR codes, we need to update the Ticket entity to include a reference to its QR codes:

@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; @OneToMany(mappedBy = "ticket", cascade = CascadeType.ALL) private List<TicketValidation> validations = new ArrayList<>(); @OneToMany(mappedBy = "ticket", cascade = CascadeType.ALL) private List<QrCode> qrCodes = 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 QrCode class to model a ticket's QrCode
  • Added qrCodes reference to the Ticket class
© 2026 Devtiro Ltd. All rights reserved