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
QrCodeclass to model a ticket's QrCode - Added
qrCodesreference to theTicketclass