Also ich bin mir nicht sicher, wie ich diese Frage stellen soll, da es scheint, dass es ziemlich einfach sein sollte, die Antwort auf diese Frage zu finden.Verwenden einer Entität (und deren Primärschlüssel) als eine andere Entity-ID
Ich habe 3 Tabellen; ContentHeader, ContentType1 und ContentType2. ContentHeader verfügt über einen primären Autoinkrementschlüssel. ContentType1 und ContentType2 enthalten beide Fremdschlüssel für den Primärschlüssel von ContentHeader. Diese Fremdschlüssel sind auch die Primärschlüssel für ihre jeweiligen Tabellen.
CREATE TABLE contentHeader (contentID INT AUTO_INCREMENT PRIMARY KEY, ...) ENGINE=InnoDB;
CREATE TABLE contentType1 (contentID INT PRIMARY KEY, FOREIGN KEY (contentID) REFERENCES contentHeader (contentID), ...) ENGINE=InnoDB;
CREATE TABLE contentType2 (contentID INT PRIMARY KEY, FOREIGN KEY (contentID) REFERENCES contentHeader (contentID), ...) ENGINE=InnoDB;
Ich habe vier Klassen erstellt:
@Entity
public class ContentHeader {
@Id
@GeneratedValue
protected int contentID;
...
}
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Content {
@Id
@OneToOne
protected ContentHeader contentHeader;
...
}
@Entity
public class ContentType1 extends Content {
...
}
@Entity
public class ContentType2 extends Content {
...
}
Dies wirft einen Nullzeiger, wenn sie versuchen, das Schema zu generieren. Ich bin mir ziemlich sicher, dass ich einfach etwas Einfaches vermisse. Ich habe die PrimaryKeyJoinColumn bemerkt, aber ich bin mir nicht sicher, ob es das ist, was ich brauche oder nicht.