2012-03-24 4 views
1

Ich habe eine Klassenstruktur wie:Java - JPA: Wie kann ich eine Tabelle für jede Unterklasse, aber nicht für die Oberklasse erstellen?

abstract class A { 
    String a; 
} 

class B extends A { 
    String b; 
} 

class C extends A { 
    String c; 
} 

Jetzt möchte ich JPA eine Tabelle für jede Unterklasse erstellen.

enter image description here

ich einige frühere Fragen ausgesehen haben, aber ich bin verwirrt. Wie kann ich diese Klassen zuordnen?

+1

Werfen Sie einen Blick auf dieser Blog-Post: http://uaihebert.com/?p=617 – SHiRKiT

+0

Danke sehr viel. Gibt es eine Möglichkeit, nur Tabellen für Unterklassen zu erstellen? –

Antwort

5

Wenn die A wegen Zuordnungen vererbt wird und Sie nicht separate Einheit muß für sie, können Sie definieren es als MappedSuperClass. Die zugeordnete Superklasse dient nur dazu, Zuordnungen zu erben, Sie können sie nicht abfragen.

Auf der anderen Seite, wenn echte Vererbung benötigt wird - je nach Implementierung - können Sie für table per (concrete) class Vererbungsstrategie gehen. Die Unterstützung für diese Strategie ist optional, daher kann nicht mit allen Implementierungen gearbeitet werden. Es ist zumindest mit frischen Versionen von

In Ihrem Fall benötigte Schritt wäre dann die Klasse A folgenden hinzuzufügen: @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

+0

Ich habe gerade über MappedSuperClass gelesen. Danke für die Antwort. –

0

Warum nicht die Klasse A mit Anmerkungen versehen mit @ MappedSuperclass Tabelle Unterklasse oder Tabelle für Beton Klasse inhertience Strategie verwendet

Verwandte Themen