Ich verwende Hibernate Envers, um meine Entitäten zu überprüfen.Wie kann eine Join-Tabelle und zugehörige Entitäten mit Hibernate Envers nicht überprüft werden?
Ich habe eine geprüfte Einheit, Foo
, die eine List<Bar>
als Eigenschaften hat. Ich möchte jedoch die Bar
Entitäten nicht überprüfen. So schrieb ich, dass:
@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;
}
}
Nun, ich eine Revision der Foo
abrufen möchten:
AuditReader reader = AuditReaderFactory.get(getEntityManager());
Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
Leider, wenn ich alle Daten abgerufen werden sollen (dh, wenn es faul Lasten der bars
) , erhalte ich die Fehler ORA-00942: table or view does not exist
, wie es zur Abfrage versucht:
select ... from T_FOO_BAR_AUD x, T_BAR y where ...
ich aber, dass mit @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
, Hibernate Envers den Link halten würde s mit den Bar
Artikeln der aktuellen Einheit. Wie kann ich mein Problem lösen, ohne explizit die Tabellen T_BAR
und T_FOO_BAR
(die Join-Tabelle) überprüfen zu müssen? In anderen Worten, wenn ich die Liste von bars
von meiner Revisionseinheit abrufe, erhalte ich die Liste von bars
von meiner aktuellen Entität (da die Verbindungen zwischen Foo
und Bar
nicht auditiert werden).
Danke.