Hallo zusammen,
ich beschäftige mich seit kurzem mit Hibernate-Annotations und bin nach einigen Anfangsschwierigkeiten auch schon relativ weit gekommen.
Ein Problem, mit dem ich noch zu kämpfen habe ist eine Vererbungsstruktur, die ich nach den References und Tutorials noch nicht ganz auflösen konnte.
Ich habe eine Klasse News. Von dieser erbt eine Klasse AbstractAdHocNews, von der wiederum einmal SmsNews und EmailNews erben.
Mein Ziel ist es jetzt zwei Tabellen in der Datenbank zu haben. Eine für die News und eine für die AbstractAdHocNews. Meine Versuche mit SINGLETABLE und CLASS_PER_TABLE haben alle nicht so gefruchtet.
Logisch wäre es für mich allerdings folgendermaßen:
## News ##
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class News implements Serializable {
. . .
}
## AbstractAdHocNews ##
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="NEWS_TYPE",discriminatorType=DiscriminatorType.STRING)
public abstract class AbstractAdhocNews extends News {
. . .
}
## SmsNews ##
@Entity
@DiscriminatorValue("SMS_NEWS")
public class SmsNews extends AbstractAdhocNews {
. . .
}
## EmailNews ##
@Entity
@DiscriminatorValue("EMAIL_NEWS")
Dies führt allerdings nicht zum Erfolg. Eher werden nun News-Tabelle, AbstractAdHocNews-Tabelle, SmsNews-Tabelle und Email-Tabelle erstellt.
Nun frage ich mich, ob die Inheritance-Strategie nicht überschrieben werden kann und -- wenn dies der Fall sein sollte -- ich dies so lösen kann, dass ich eben nur zwei Tabellen habe:
News-Tabelle mit allen Newseinträgen von normalen News und AdHocNews, sowie eine Tabelle, welche über eine DiscriminatorColumn die Unterscheidung zwischen Email und SMS vornimmt.
Für Hinweise bin ich dankbar
Gruß
Henning
|