Vraptor + Hibernate Envers como Gerar Relatorios de Auditoria

11 respostas
F

Prezados, bom dia, gostaria de saber se algem poderia me ajudar. Eu conseguir criar um CustomRevisionEntity (com o id e nome do usuário) e um Listener personalizado para poder salvar mais informações de auditoria do hiberante enverns. Gostaria de saber se alguem já implementou algum relatorio para buscar todas as informações foram salvas, tanto na entidade que está sendo auditada, quanto os dados do CustomRevisionEntity.

Através do código abaixo eu consigo recuperar a referencia da classe auditada. Porém os campos que coloquei o CustomRevisionEntity estão nulos.

[ ]'s

11 Respostas

Lucas_Cavalcanti

esses campos estão preenchidos na tabela respectiva do banco?

F

Olá Lucas, estão sim.

Lucas_Cavalcanti

dá uma olhada nas opções do método… tem algumas que só recuperam o id da revision e outras que recuperam tudo.

F

Olá Lucas, obrigado pela resposta. Não consegui encontrar nada parecido. Teria alguma noção do que pelo menos eu devo busca? Teria algum exemplo?

Obrigado.

Lucas_Cavalcanti

a documentação do envers é o melhor lugar pra buscar isso :wink:

pelo menos no javadoc deve ter a diferença dos métodos pra fazer query nas revisões.

Lucas_Cavalcanti

O código que eu já usei, e funcionou, é esse:

AuditReader reader = AuditReaderFactory.get(manager);
                
@SuppressWarnings("unchecked")
List<Object[]> result = reader.createQuery()
     .forRevisionsOfEntity(Entidade.class, false, false)
     .add(AuditEntity.id().eq(id))
     .getResultList();
F

Lucas desculpe perturbar, estou usando realmente o codigo que voce postou.

Quando eu uso o Ctrl + Shift + I no Objeto recebo o resultado da imagem em anexo

Lucas_Cavalcanti

vc passou false, true… eu passei false, false… verifica aí

F

Ok. Corrigi isso. E verifiquei que dentro do CustomRevisionEntity_$$_javassist_16 existe um objeto handler que possui um objeto target que está preenchido. Como faço pra navegar até o target? Você sabe?


Lucas_Cavalcanti

teoricamente é só usar o objeto. tente fazer isso por fora do inspect do debugger… o hibernate cria proxies das classes, por isso que aparece tudo null no inspector

F

Obrigado Lucas pela sua grande ajuda. Consegui fazer exatamente o que flw. Abraço

Criado 16 de agosto de 2012
Ultima resposta 16 de ago. de 2012
Respostas 11
Participantes 2