package zw.qantra.tm.domain.models; import com.fasterxml.jackson.annotation.JsonFormat; 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) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS") private LocalDateTime createdAt; // Or Date, Timestamp @UpdateTimestamp @Column(name = "updated_at", nullable = true) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS") private LocalDateTime updatedAt; // Or Date, Timestamp private Boolean deleted = false; }