Java / Hibernate JPA: InheritanceType.TABLE_PER_CLASS und IDs
-
01-10-2019 - |
Frage
Ich verwende Hibernate JPA.
Angenommen, ich habe diese Klassen:
AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer
Gibt es eine Möglichkeit die konkreten Klassen haben unabhängige IDs zu machen?
Ich bin mit InheritanceType.TABLE_PER_CLASS.
Lösung
Aus dem Hibernate Annotations-Referenzhandbuch:
2.2.4.1. Tabelle pro Klasse
Diese Strategie hat viele Nachteile (esp. mit polymorphen Abfragen und Verbände) erklärt in der JPA spec, der der Ruhebezug Dokumentation, Hibernate in Aktion, und viele andere Orte. Hibernate Arbeit die meisten von ihnen um die Umsetzung dieser Strategie
SQL UNION
Abfragen. Es wird allgemein für die oberste Ebene der verwendet eine Vererbungshierarchie:@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Flight implements Serializable { ... }
Diese Strategie unterstützt eine Eins-zu-viele Verbände, sofern sie bidirektional. Diese Strategie funktioniert nicht den
IDENTITY
Generator unterstützen Strategie: Die ID muss geteilt werden über mehrere Tabellen. Folglich, wenn diese Strategie verwenden, sollten Sie nichtAUTO
verwenden nochIDENTITY
.
Also ich habe Angst, was Sie wollen nicht unterstützt wird (und ich schlage vor Gebrauch GenerationType.TABLE
).