Wie mische ich Vererbungsstrategien mit JPA-Anmerkungen und Ruhezustand?

Laut demeferenzdokumentation zum Ruhezusta Unter Verwendung der XML-Metadaten von Hibernate sollten verschiedene Vererbungszuordnungsstrategien mischbar sein:
http: //docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html#inheritance-mixing-tableperclass-tablepersubclas

Der entsprechende Abschnitt desHibernate Annotations Reference Guide deckt das nicht ab:
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#d0e1168

Andererseits schlagen die JavaDocs vor, dass das Mischen von Vererbungsstrategien möglich sein sollte. In javax.persistence.DiscriminatorColumn heißt es beispielsweise:

Die Strategie und die Unterscheidungsspalte werden nur im Stammverzeichnis einer Entitätsklassenhierarchie angegeben.oder Subhierarchie, in der eine andere Vererbungsstrategie wird angewandt

Das Folgende ist ein Beispiel für die Zuordnung, die ich erreichen möchte. Ich würde gerne @ verwend table-per-subclass Zuordnung in der Nähe des Stamms der Hierarchie, aber ändern Sie zu table-per-class-hierarchy Mapping in der Nähe der Blätter. Hier ist ein Beispielcode:

@Entity
@Inheritance( strategy = InheritanceType.JOINED )
public abstract class A implements Serializable
{
    @Id
    private String id;

    // other mapped properties...
}

@Entity
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
public class BB extends A
{
    // other mapped properties and associations...
}

@Entity
public class BB1 extends BB
{
    // other stuff, not necessarily mapped...
}

@Entity
public class BB2 extends BB
{
    // other stuff, not necessarily mapped...
}

@Entity
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
public class CC extends A
{
    // other mapped properties and associations...
}

@Entity
public class CC1 extends CC
{
    // other stuff, not necessarily mapped...
}

...

Was ich von diesem Mapping erwarte, sind genau 3 Tabellen:A, BB, undCC. BeideBB undCC sollte eine Standard-Diskriminatorspalte mit dem Namen @ habDTYPE. Sie sollten auch alle Spalten bereitstellen, die für alle zugeordneten Eigenschaften und Zuordnungen der jeweiligen Unterklassen erforderlich sind.

Stattdessen scheint die Klassenhierarchie das @ zu verwende table-per-subclass Vererbungsstrategie im gesamten. Das heißt Ich bekomme für jede der oben genannten Entitäten eine eigene Tabelle. Ich würde dies gerne vermeiden, da die Blätter der Klassenhierarchie extrem leicht sind und es einfach übertrieben erscheint, für jedes von ihnen eine eigene Tabelle zu haben!

Habe ich etwas übersehen? Jeder Rat wird sehr geschätzt! Gerne gebe ich weitere Infos ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage