Die @Audited
Anmerkung glauben, dass die Art und Weise nicht funktioniert, sollte es. Durch sie auf einer Super-Klasse verwendet wird, hat es keine Auswirkungen auf die untergeordneten Klassen, die sie verlängern, zumindest zu kontrollieren, ob das Kind ist oder ist nicht geprüft. Das ist Absicht.
den Begriff Überlegen Sie, wo wir eine Supertyp und zwei unterschiedliche Implementierungen haben, eine, die wir mit seiner übergeordneten Klasse Eigenschaften und ein überwachen möchten, die wir nicht.
@MappedSuperclass
@Audited
public class Animal {}
@Entity
@Audited
public class Cat extends Animal {}
@Entity
public class Dog extends Animal {}
In diesem Beispiel, da @Audited
ist, nur nicht vererbt auf der übergeordneten Klasse die Anmerkung platzieren und die Cat
in Einheit Ergebnis nur Cat
geprüft werden. Die Dog
Unternehmen und seine Supereigenschaftswerte nicht.
Wenn @Audited
als vererbte Annotation behandelt würden, müssten wir eine Reihe von @AuditOverride
Annotationen einführen, um das gleiche Beispiel zu erhalten, siehe unten.
@MappedSuperclass
public class Animal {}
@Entity
@Audited
@AuditOverride(...)
public class Cat extends Animal {}
@Entity
public class Dog extends Animal {}
Was noch schlimmer macht, ist, wenn Animal
eine Teilmenge seiner Eigenschaften hatte geprüft, was die Anzahl der @AuditOverride
s beeinflussen würde.
Dies wird noch komplizierter, wenn Sie beginnen, Entity Vererberungsstrategien zu untersuchen und wie diese ins Spiel kommen, ob eine Entity auditiert wird oder nicht und in welchem Grad auf welcher Hierarchieebene. Es gibt eine ganze Diskussion HHH-6331 und HHH-9770.
Kurz gesagt, wenn Sie Ihr Kind Klassen geprüft wollen, müssen sie werden explizit mit Anmerkungen versehen werden.
danke - Naros – wthamira
Diese Beschreibung ist sehr klar für mich! – wthamira
können wir Auditdaten in einer separaten Datenbank statt in einer Hauptdatenbank speichern? – wthamira