package com.lions.dev.entity; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; import java.util.UUID; /** * Classe de base pour toutes les entités du système AfterWork. * Cette classe définit les propriétés communes à toutes les entités, telles que * l'identifiant unique et les informations d'audit (création, mise à jour). * * Chaque entité héritant de cette classe aura un identifiant auto-généré, * et des dates automatiques pour la création et la mise à jour. */ @MappedSuperclass @Getter @Setter public abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) private UUID id; // Identifiant unique de l'entité, généré automatiquement @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; // Date de création de l'entité @Column(name = "updated_at", nullable = false) private LocalDateTime updatedAt; // Date de la dernière mise à jour de l'entité /** * Méthode appelée avant la persistance d'une nouvelle entité dans la base de données. * Cette méthode définit automatiquement la date de création et de mise à jour. */ @PrePersist protected void onCreate() { this.createdAt = LocalDateTime.now(); this.updatedAt = LocalDateTime.now(); } /** * Méthode appelée avant la mise à jour d'une entité existante dans la base de données. * Cette méthode met à jour automatiquement la date de la dernière mise à jour. */ @PreUpdate protected void onUpdate() { this.updatedAt = LocalDateTime.now(); } }