Saltar al contenido

Auditoría y @Embedded en Spring Data JPA

Basta ya de buscar en otros sitios porque has llegado al sitio necesario, contamos con la respuesta que buscas sin complicarte.

Solución:

Actualizar:
Esta funcionalidad se ha agregado a Spring Data 2.1 M2 (Lovelace). https://jira.spring.io/browse/DATACMNS-1274

Las anotaciones de auditoría de Spring Data en clases anidadas (integrables) aún no son compatibles. Aquí está el ticket de Jira que solicita esta función.

Sin embargo, podríamos usar un oyente de auditoría personalizado para configurar la información de auditoría en clases integrables.

Aquí está la implementación de muestra tomada de un blog: Cómo auditar las modificaciones de la entidad usando las anotaciones JPA @EntityListeners, @Embedded y @Embeddable.

Auditoría integrable

@Embeddable
public class Audit 

    @Column(name = "created_on")
    private LocalDateTime createdOn;

    @Column(name = "created_by")
    private String createdBy;

    @Column(name = "updated_on")
    private LocalDateTime updatedOn;

    @Column(name = "updated_by")
    private String updatedBy;

    //Getters and setters omitted for brevity

Oyente de auditoría

public class AuditListener 

    @PrePersist
    public void setCreatedOn(Auditable auditable) 
        Audit audit = auditable.getAudit();

        if(audit == null) 
            audit = new Audit();
            auditable.setAudit(audit);
        

        audit.setCreatedOn(LocalDateTime.now());
        audit.setCreatedBy(LoggedUser.get());
    

    @PreUpdate
    public void setUpdadtedOn(Auditable auditable) 
        Audit audit = auditable.getAudit();

        audit.setUpdatedOn(LocalDateTime.now());
        audit.setUpdatedBy(LoggedUser.get());
    

Auditable

public interface Auditable 

    Audit getAudit();

    void setAudit(Audit audit);

Entidad de muestra

@Entity
@EntityListeners(AuditListener.class)
public class Post implements Auditable 

    @Id
    private Long id;

    @Embedded
    private Audit audit;

    private String title;

  

Recuerda que tienes la capacidad de parafrasear tu experiencia si diste con la contestación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *