package zw.qantra.tm.domain.models; import jakarta.persistence.Column; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.MappedSuperclass; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.UpdateTimestamp; import org.hibernate.type.SqlTypes; import java.time.LocalDateTime; import java.util.UUID; @Getter @Setter @MappedSuperclass public class BaseEntity { @Id @GeneratedValue(generator = "UUID") @GenericGenerator( name = "UUID", strategy = "org.hibernate.id.UUIDGenerator" ) @JdbcTypeCode(SqlTypes.UUID) @Column(name = "id", updatable = false, nullable = false) private UUID id; @CreationTimestamp @Column(name = "created_at", nullable = true, updatable = false) private LocalDateTime createdAt; // Or Date, Timestamp @UpdateTimestamp @Column(name = "updated_at", nullable = true) private LocalDateTime updatedAt; // Or Date, Timestamp }