1
この質問に答える方法がわかりにくいように、この質問をどのように行うのかよく分かりません。エンティティ(およびそれらの主キー)を別のエンティティのIdとして使用する
私は3つのテーブルを持っています。 ContentHeader、ContentType1およびContentType2。 ContentHeaderには、プライマリの自動インクリメントキーがあります。 ContentType1とContentType2はどちらもContentHeaderの主キーへの外部キーを保持します。これらの外部キーもそれぞれのテーブルの主キーです。
@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 {
...
}
スキーマを生成しようとするとこれはヌルポインタをスロー:
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;
私は4つのクラスを作成しました。私はちょっと単純なものを見逃していると確信しています。私はPrimaryKeyJoinColumnに気付きましたが、私が必要としているかどうかは分かりません。