51 lines
1.6 KiB
Java
51 lines
1.6 KiB
Java
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();
|
|
}
|
|
}
|