Jak nie kontrolować tabeli łączenia i jednostek powiązanych za pomocą Hibernate Envers?
Używam Hibernate Envers do kontroli moich jednostek.
Mam jedną kontrolowaną jednostkę,Foo
, który maList<Bar>
jako właściwości. Nie chcę jednak przeprowadzać audytuBar
podmioty. Napisałem więc:
@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;
}
}
Teraz chcę odzyskać wersjęFoo
:
AuditReader reader = AuditReaderFactory.get(getEntityManager());
Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
Niestety, gdy chcę pobrać wszystkie dane (tj. Gdy leniwie ładujebars
), Dostaję błądORA-00942: table or view does not exist
, jak próbował zapytać:
select ... from T_FOO_BAR_AUD x, T_BAR y where ...
Myślałem o tym, używając@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
, Hibernate Envers zachowałby połączenia zBar
elementyobecny jednostka.
Jak więc mogę rozwiązać mój problem, bez konieczności dokładnego sprawdzania tabelT_BAR
iT_FOO_BAR
(tabela łączenia)? Innymi słowy, gdy odzyskuję listębars
z mojej wersji rewizji otrzymuję listębars
z mojego obecnego podmiotu (jako powiązania międzyFoo
iBar
nie są kontrolowane).
Dzięki.