Envers para logs

As classe model são assim:

package br.com.ghnetsoft.smga.model;

import static lombok.AccessLevel.PROTECTED;
import static org.hibernate.annotations.CacheConcurrencyStrategy.NONSTRICT_READ_WRITE;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.AuditTable;
import org.hibernate.envers.Audited;

import br.com.ghnetsoft.principal.auditoria.AuditableBase;
import br.com.ghnetsoft.principal.auditoria.Principal;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@ToString(of = { "id" })
@EqualsAndHashCode(of = "id", callSuper = false)
@Entity
@Setter
@Getter
@Builder
@Table(name = "TAB_PESSOA_USUARIO")
@NoArgsConstructor(access = PROTECTED)
@AllArgsConstructor(access = PROTECTED)
@Cache(usage = NONSTRICT_READ_WRITE)
@Audited
@AuditOverride(forClass = Principal.class)
@AuditTable(schema = "LOGS", value = "TAB_PESSOA_USUARIO_AUD")
public class PessoaUsuario extends AuditableBase {

    private static final long serialVersionUID = -4946479448744769382L;
    @Id
    @Column(name = "PK_PESSOA_USUARIO")
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
    private String id;
    @ManyToOne(targetEntity = Pessoa.class)
    @JoinColumn(name = "FK_PESSOA")
    private Pessoa pessoa;
    @ManyToOne(targetEntity = Usuario.class)
    @JoinColumn(name = "FK_USUARIO")
    private Usuario usuario;
}

classe AuditableBase

package br.com.ghnetsoft.principal.auditoria;

import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@ToString(of = { "versao" })
@Getter
@Setter
@NoArgsConstructor
@MappedSuperclass
@EntityListeners({ Auditor.class })
public abstract class AuditableBase extends Principal {

    private static final long serialVersionUID = 3026068998520990814L;
    @Version
    @Column(name = "NR_VERSAO")
    private Integer versao;
}

Classe principal

package br.com.ghnetsoft.principal.auditoria;

import static javax.persistence.AccessType.FIELD;
import static javax.persistence.EnumType.STRING;
import static lombok.AccessLevel.PROTECTED;

import java.io.Serializable;
import java.time.LocalDateTime;

import javax.persistence.Access;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Enumerated;
import javax.persistence.MappedSuperclass;

import org.springframework.data.annotation.CreatedDate;

import br.com.ghnetsoft.principal.enuns.OperacacoBancoLogEnum;
import br.com.ghnetsoft.principal.enuns.SituacaoRegistroEnum;
import br.com.ghnetsoft.principal.enuns.StatusDoRegistroEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@ToString(of = { "dataHoraCadastro", "dataHoraMovimentacao", "loginMovimentacao", "ipMovimentacao", "tipoOperacao", "statusDoRegistro", "dsSituacao" })
@MappedSuperclass
@Getter
@Setter
@Embeddable
@Access(FIELD)
@NoArgsConstructor(access = PROTECTED)
@AllArgsConstructor(access = PROTECTED)
public class Principal implements Serializable {

    private static final long serialVersionUID = -7494237554968808847L;
    @Column(name = "TS_CADASTRO")
    @CreatedDate
    private LocalDateTime dataHoraCadastro;
    @Column(name = "TS_MOVIMENTACAO")
    private LocalDateTime dataHoraMovimentacao;
    @Column(name = "CD_LOGIN_MOVIMENTACAO")
    private String loginMovimentacao;
    @Column(name = "IP_MOVIMENTACAO")
    private String ipMovimentacao;
    @Column(name = "TP_OPERACAO")
    @Enumerated(STRING)
    private OperacacoBancoLogEnum tipoOperacao;
    @Enumerated(STRING)
    @Column(name = "ST_REGISTRO")
    private StatusDoRegistroEnum statusDoRegistro;
    @Enumerated(STRING)
    @Column(name = "ST_SITUACAO")
    private SituacaoRegistroEnum dsSituacao;
}

Classe Auditor

package br.com.ghnetsoft.principal.auditoria;

import static br.com.ghnetsoft.principal.enuns.OperacacoBancoLogEnum.ALTERACAO;
import static br.com.ghnetsoft.principal.enuns.OperacacoBancoLogEnum.EXCLUSAO;
import static br.com.ghnetsoft.principal.enuns.OperacacoBancoLogEnum.INCLUSAO;
import static br.com.ghnetsoft.principal.enuns.SituacaoRegistroEnum.EM_EDICAO;
import static br.com.ghnetsoft.principal.enuns.StatusDoRegistroEnum.ATIVO;
import static java.net.InetAddress.getLocalHost;
import static java.time.LocalDateTime.now;
import static org.apache.commons.lang3.StringUtils.isNotEmpty;

import java.io.Serializable;
import java.net.UnknownHostException;

import javax.annotation.PreDestroy;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;

import lombok.extern.slf4j.Slf4j;

@Slf4j
class Auditor implements Serializable {

    private static final long serialVersionUID = 9110288632011211834L;

    @PrePersist
    public void auditaInclusao(final AuditableBase entidade) {
        entidade.setTipoOperacao(INCLUSAO);
        entidade.setDataHoraCadastro(now());
        entidade.setStatusDoRegistro(ATIVO);
        entidade.setDsSituacao(EM_EDICAO);
        log.info(EM_EDICAO.toString());
        audita(entidade);
    }

    @PreUpdate
    public void auditaAlteracao(final AuditableBase entidade) {
        entidade.setTipoOperacao(ALTERACAO);
        log.info(ALTERACAO.toString());
        audita(entidade);
    }

    @PreDestroy
    public void auditaDelete(final AuditableBase entidade) {
        entidade.setTipoOperacao(EXCLUSAO);
        log.info(EXCLUSAO.toString());
        audita(entidade);
    }

    private void audita(final AuditableBase entidade) {
        try {
            entidade.setDataHoraMovimentacao(now());
            entidade.setIpMovimentacao(getLocalHost().getHostAddress());
            String login = " ";
            if (isNotEmpty(entidade.getLoginMovimentacao())) {
                login = entidade.getLoginMovimentacao();
            }
            entidade.setLoginMovimentacao(login);
            log.info("Loga para a classe" + getClass().getName() + " : " + entidade.getClass().getName());
        } catch (final UnknownHostException e) {
            log.error(e.getLocalizedMessage(), e);
        }
    }
}

Mas quando o sistema executa o comando
repository.delete(model)

Ele deleta do modelo, mas na auditoria, ele não inclui todas as informações, isto é, ele exclui antes de auditar.

Como fazer com que o sistema antes de deletar ele audita ?