Hibernate と JPA を使用して 1 対 1 の関係を実装したいと考えていました。階層の一部である 2 つのクラスがあります: 質問階層と回答階層です。
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class QuestionUnit {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private AnswerUnit correctAnswer;
...}
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class AnswerUnit {
@Id
private int id;
public abstract Object getAnswerContent();
public abstract boolean isEqual(AnswerUnit otherAnswer);
public int getId() {
return id;
}
}
実装として OpenQuestion と OpenAnswer があります。
OpenQuetions を含むテーブルには自動生成された主キーがあり、OpenAnswer を含むテーブルには OpenQuestion テーブルの主キーと同じ値を持つ主キーがあるようにしたかったのです。
ここの例に従ってみました: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html part 2.2.5.1. 一対一。
しかし、OpenQuestion を永続化すると、テーブル OpenQuestion の columnsid
とquestionContent
OpenQuestionAnswerのid
,answerContent
が得られますが、ID の値が一致しません。
それで、私はどこで間違いを犯していますか?