Uso Hibernate Envers per controllare le mie entità.Come non controllare una tabella di join e entità correlate utilizzando Hibernate Envers?
Ho un'entità sottoposta a revisione, Foo
, che ha un List<Bar>
come proprietà. Tuttavia, non voglio controllare le entità Bar
. Così, ho scritto che:
@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;
}
}
Ora, voglio recuperare una revisione della Foo
:
AuditReader reader = AuditReaderFactory.get(getEntityManager());
Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
Purtroppo, quando ho voglia di recuperare tutti i dati (ad esempio quando viene caricato pigri la bars
) , ottengo l'errore ORA-00942: table or view does not exist
, mentre cercava di ricerca:
select ... from T_FOO_BAR_AUD x, T_BAR y where ...
ho pensato che l'utilizzo di @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
, Hibernate Envers terrei il link s con gli articoli Bar
dell'entità corrente.
Quindi, come posso risolvere il mio problema, senza dover controllare esplicitamente le tabelle T_BAR
e T_FOO_BAR
(la tabella di join)? In altre parole, quando recupero l'elenco di bars
dall'entità di revisione, ottengo l'elenco di bars
dall'entità corrente (poiché i collegamenti tra Foo
e Bar
non vengono verificati).
Grazie.