Anmerkungen versehen vererbten Eigenschaften für die Persistenz
-
03-07-2019 - |
Frage
Unter der Annahme, ich eine Klasse A haben wie folgt:
class A{
int id;
int getId(){};
void setId(int id){};
}
Und eine Klasse B wie folgt:
@Entity
@Table(name="B")
class B extends A{
string name;
@Column(length=20)
string getName(){}
void setName(){}
}
Wie kann ich das geerbte ID-Feld von A mit Anmerkungen versehen, so dass Hibernate / JPA weiß es die Id für das Unternehmen? Ich versuchte einfach platzieren @Id auf dem Feld in A, aber das hat nicht funktioniert. ich versucht, ein von einem Unternehmen als auch, und dies auch nicht funktionierte zu machen.
Lösung
Angenommen, Sie nicht die übergeordnete Klasse wollen selbst eine Einheit darstellen, Sie @MappedSuperclass
auf der Super-Klasse verwenden können, haben Unterklassen die Eigenschaften für die Persistenz erben:
@MappedSuperclass
class A{
int id;
@Id
int getId(){};
void setId(int id){};
}
Betrachten wir die übergeordnete Klasse abstrakt machen. Siehe diesem Abschnitt des Dokuments für weitere Details.
Andere Tipps
Es gibt eine Reihe von Strategien, die Sie verwenden können. Hier ist etwas, das Sie versuchen können:
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class A{
int id;
@Id @GeneratedValue
int getId(){};
void setId(int id){};
}
@Entity
@Table(name="B")
class B extends A{
string name;
@Column(length=20)
string getName(){}
void setName(){}
}