AuditedTaxonomyEntity.java
package fr.tiogars.chat.domains.taxonomy;
import java.time.Instant;
import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.MappedSuperclass;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class AuditedTaxonomyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true, updatable = false)
private String code;
@Column(nullable = false)
private String label;
private String description;
@CreatedDate
@Column(nullable = false, updatable = false)
private Instant createdDate;
@LastModifiedDate
@Column(nullable = false)
private Instant lastModifiedDate;
@CreatedBy
@Column(nullable = false, updatable = false)
private String createdBy;
@LastModifiedBy
@Column(nullable = false)
private String lastModifiedBy;
protected AuditedTaxonomyEntity() {
// Required by JPA.
}
protected AuditedTaxonomyEntity(String code, String label, String description) {
this.code = code;
update(label, description);
}
public void update(String label, String description) {
this.label = label;
this.description = description;
}
public Long getId() {
return id;
}
public String getCode() {
return code;
}
public String getLabel() {
return label;
}
public String getDescription() {
return description;
}
public Instant getCreatedDate() {
return createdDate;
}
public Instant getLastModifiedDate() {
return lastModifiedDate;
}
public String getCreatedBy() {
return createdBy;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
}