Hallo zusammen,
ich habe folgende Ausgangssituation:
Eine abstracte Basisklasse mit einem generischen Element.
Code:
@Entity
class abstract abstractBaseClass <T>{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer Id;
private T element;
}
Ich habe folgende konkrete Klassen:
Code:
@Entity
class A extends abstractBaseClass <KlasseX>{
@ManyToOne(targetEntity = KlasseX.class)
public KlasseX getElement() {
}
}
@Entity
class B extends abstractBaseClass <KlasseY>>{
@ManyToOne(targetEntity = KlasseY.class)
public KlasseY getElement() {
}
@Entity
class C extends abstractBaseClass <KlasseZ>{
@ManyToOne(targetEntity = KlasseZ.class)
public KlasseZ getElement() {
}
Das ganze funktioniert wenn ich in bei der abstractBaseClass sage
@Inheritance(strategy = InheritanceType.JOINED)
Aber aufgrund von Perfomance möchte ich das nicht haben. Am liebsten wäre mir einen Lösung wo ich jede Konkrete Klasse in eine eigene Tabelle hinterlege. Also @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) Aber das funktioniert irgendwie nicht.
Ich könnte auch mit der Lösung SINGLE_TABLE leben, aber aufgrund der generischen Datentypen klappt das auch nicht. Da gibt es dann Constraint Verletzunge von der Datenbank.
Als Datenbanksystem muss Oracle und MsSQL funktionieren. Also eine Lösung speziell für eine DB fällt auch raus.
Ich hoffe ich konnte mein Problem deutlich machen und es kann mir jemand weiter helfen.
Gruß
Santo.[/code]