Pergunta

Já estou usando o Hibernate Envers para auditar entidades que são atualizadas por um usuário através da interface do usuário; No entanto, também tenho trabalhos assíncronos em segundo plano e gostaria de auditá -los também usando o Envers. Agora, para a interface do usuário, eu rastreio que httprequest fez a alteração que me dá a data, usuário, sessão etc. Para os trabalhos de fundo, eu gostaria de rastrear a data em que o trabalho foi executado e o trabalho exato que o modificou (classe de trabalho).

É possível configurar 2 entidades de auditoria, 1 para a interface do usuário e 1 para as mudanças do sistema?

Walter

Foi útil?

Solução

Ainda não testei isso, mas estou simplesmente fazendo o seguinte:

@RevisionListener(SystemRevisionListener.class)
@Entity
public class SystemRevision extends AbstractRevision
{
   @Column(nullable = false, updatable = false)
   protected QuartzTriggerHandle job;

   @Column(nullable = false, updatable = false)
   protected Class jobClass;

   ...
}



@RevisionListener(WebRevisionListener.class)
@Entity
public class WebRevision extends AbstractRevision
{
   @ManyToOne(optional = false)
   @JoinColumn(nullable = false, updatable = false)
   protected HttpRequest httpRequest;

   ...
}

Então, em cada ouvinte, faço o que preciso fazer para definir essas propriedades. Agora eu deveria ser capaz de rastrear como uma entidade é modificada, se um usuário fez a alteração (e em que solicitação ela está vinculada) ou se o sistema alterar a entidade, em que trabalho é responsável pela alteração. Eu estaria armazenando mais propriedades no SystemRevision do que isso, provavelmente os argumentos e o nome do método.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top