Como não auditar uma tabela de junção e entidades relacionadas usando o Hibernate Envers?
Eu uso o Hibernate Envers para auditar minhas entidades.
Eu tenho uma entidade auditadaFoo
, que tem umList<Bar>
como propriedades. No entanto, não quero auditarBar
entidades. Assim, escrevi isso:
@Entity
@Audited
public class Foo {
@JoinTable(name = "T_FOO_BAR", joinColumns = @JoinColumn(name = "FOO_ID"), inverseJoinColumns = @JoinColumn(name = "BAR_ID"))
@ManyToMany(cascade = PERSIST)
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
public List<Bar> getBars() {
return bars;
}
}
Agora, quero recuperar uma revisão deFoo
:
AuditReader reader = AuditReaderFactory.get(getEntityManager());
Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
Infelizmente, quando quero recuperar todos os dados (ou seja, quando carrega preguiçosamentebars
), Recebo o erroORA-00942: table or view does not exist
, como tentou consultar:
select ... from T_FOO_BAR_AUD x, T_BAR y where ...
Eu pensei que usando@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
, O Hibernate Envers manteria os links com oBar
itens doatual entidade.
Então, como posso resolver meu problema sem ter que fazer uma auditoria explícita nas tabelas?T_BAR
eT_FOO_BAR
(a tabela de junção)? Em outras palavras, quando eu recuperar a lista debars
da minha entidade de revisão, eu recebo a lista debars
da minha entidade atual (como os links entreFoo
eBar
não são auditados).
Obrigado.