我想用Hibernate和JPA實現一對一的關係。我有兩個類是層次結構的一部分:問題層次結構和答案層次結構。休眠,JPA - 單向一對一
@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,我得到的列id
,questionContent
和OpenQuestionAnswer與id
,answerContent
表OpenQuestion,但IDS的值不匹配。
那麼,我在哪裏犯了一個錯誤?
這是問題所在,正如我所說,在OpenQuestion我只有'id'和'questionContent',一切有關映射在日我認爲的代碼。 – Andna 2012-08-13 15:22:49
您還需要@MappedSupperClass - 請參閱我編輯的答案。花了一些時間來提醒它。 – 2012-08-14 14:36:49
我不能使用MappedSuperClass,你不能使用映射到沒有用實體註解的類,並且我有類QuestionList,它具有QuestionUnits的ArrayList。 – Andna 2012-08-14 17:02:56