Code: Select all
@Entity
@Table(name = "person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
@Id
@Column(name = "id", nullable = false, unique = true, length = 20)
private String id;
private String name;
private String lastname;
// ...
}
Code: Select all
@Entity
@PrimaryKeyJoinColumn(name = "extra_id")
public class PersonExtra extends Person {
private String code;
private String subject;
// ...
}
Code: Select all
@Entity
@PrimaryKeyJoinColumn(name = "basic_id")
public class PersonBasic extends Person {
private String range;
}
- Ich möchte, dass eine Person gleichzeitig PersonExtra und PersonBasic sein kann.
Wie kann ich meine JPA-Entitäten so strukturieren, dass verschiedene Unterklassen (PersonExtra und PersonBasic) mit derselben ID wie die Oberklasse (Person) erstellt werden können?
- Ich dachte, dass ich vielleicht Eins-zu-Eins-Beziehungen wie Person mit erstellen könnte PersonExtra und Person mit PersonBasic könnten funktionieren.
Mir gefiel die Idee, hier Vererbung zu haben, aber es scheint, dass dies in dieser Situation nicht möglich ist? - Ich habe über die Verwendung der MappedSuperclass-Annotation nachgedacht, aber ist das nicht nur für eine abstrakte Klasse, wenn die Entität nicht in der Datenbank erstellt wird?
- Oder sollte ich vielleicht die Datenbank ändern und eine Eins-zu-viele-Beziehung mit Rollen erstellen? Ein Teil von mir denkt, dass ein Teil der Datenbanksemantik verloren gehen könnte und die spätere Implementierung der Logik kompliziert werden könnte.
Mobile version