@Inheritance

Die Annotation @Inheritance wird für die Entität an der Wurzel einer Klassenhierarchie verwendet und legt fest, wie die Klassenhierarchie auf die Tabellen des relationalen Datenmodells abgebildet wird. Es stehen drei Möglichkeiten zur Auswahl:

Single Table -- alle Instanzen aller Klassen der Hierarchie werden in einer einzigen Tabelle abgelegt, eine spezielle Spalte dient der Unterscheidung der Klassenzugehörigkeit (siehe @DiscriminatorColumn)

Joined -- für jede Klasse gibt es eine eigene Tabelle mit den nicht-ererbten Feldern, die Vererbungsbeziehungen sind durch Foreign Keys zwischen den Tabellen nachgebildet, eine spezielle Spalte dient der Unterscheidung der Klassenzugehörigkeit (siehe @DiscriminatorColumn)

Table per Class -- für jede konkrete Klasse gibt es eine eigene Tabelle


@Inheritance(strategy=InheritanceType.SINGLE_TABLE|InheritanceType.JOINED|InheritanceType.TABLE_PER_CLASS)