Как не проводить аудит таблицы соединений и связанных сущностей с помощью Hibernate Envers?
Я использую Hibernate Envers для аудита своих сущностей.
У меня есть одно проверенное лицо,Foo
, который имеетList<Bar>
как свойства. Однако я не хочу проверятьBar
юридические лица. Таким образом, я написал, что:
@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;
}
}
Теперь я хочу получить ревизиюFoo
:
AuditReader reader = AuditReaderFactory.get(getEntityManager());
Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
К сожалению, когда я хочу получить все данные (т. Е. Когда лениво загружаетbars
) Я получаю ошибкуORA-00942: table or view does not exist
, как он пытался запросить:
select ... from T_FOO_BAR_AUD x, T_BAR y where ...
Я думал, что с помощью@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
Hibernate Envers сохранит связь сBar
предметы изcurrent юридическое лицо.
Итак, как я могу решить мою проблему, без необходимости явного аудита таблицT_BAR
а такжеT_FOO_BAR
(таблица соединения)? Другими словами, когда я получаю списокbars
из моей ревизионной сущности я получаю списокbars
от моего текущего лица (как ссылки междуFoo
а такжеBar
не проверяются).
Благодарю.