我使用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)
,休眠Envers會保留鏈接s與Bar
項目當前實體。
那麼我怎樣才能解決我的問題,而不必明確審計表T_BAR
和T_FOO_BAR
(連接表)?換句話說,當我從我的修訂實體中檢索bars
列表時,我從我的當前實體獲得bars
的列表(因爲Foo
和Bar
之間的鏈接未經審覈)。
謝謝。