Wie kann ich eine Join-Tabelle und verwandte Entitäten nicht mit Hibernate Envers überwachen?

Ich verwende Hibernate Envers, um meine Entitäten zu prüfen.

Ich habe eine geprüfte Stelle,Foo, die eine hatList<Bar> als Eigenschaften. Ich möchte das jedoch nicht prüfenBar Entitäten. So schrieb ich das:

@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;
    }

}

Jetzt möchte ich eine Revision von abrufenFoo:

    AuditReader reader = AuditReaderFactory.get(getEntityManager());
    Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();

Leider, wenn ich alle Daten abrufen möchte (d. H. Wenn es faul lädt diebars) Bekomme ich den FehlerORA-00942: table or view does not exist, als es versuchte abzufragen:

select ... from T_FOO_BAR_AUD x, T_BAR y where ...

Ich dachte das mit@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED), Hibernate Envers würde die Links mit dem behaltenBar Gegenstände deraktuell Entität.

Wie kann ich mein Problem lösen, ohne die Tabellen explizit prüfen zu müssen?T_BAR undT_FOO_BAR (der Join-Tisch)? Mit anderen Worten, wenn ich die Liste vonbars Von meiner Revisionseinheit erhalte ich die Liste vonbars von meiner jetzigen Entität (als die Verbindungen zwischenFoo undBar werden nicht geprüft).

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage