1
所以,我不知道如何提出这个问题,因为它似乎应该很容易找到这个问题的答案。使用一个实体(及其主键)作为另一个实体的ID
我有3张桌子; ContentHeader,ContentType1和ContentType2。 ContentHeader有一个主键,自动递增键。 ContentType1和ContentType2都将外键保存到ContentHeader的主键。这些外键也是它们各自表的主键。
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;
我已经创建了四个类:
@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 {
...
}
试图生成模式时,这会抛出一个空指针。我很确定我只是缺少一些简单的东西。我注意到了PrimaryKeyJoinColumn,但我不确定这是否是我需要的。