Hibernate와 JPA를 사용하여 일대일 관계를 구현하고자했습니다. 계층 구조의 일부인 두 개의 클래스가 있습니다. 질문 계층 구조 및 응답 계층 구조.Hibernate, JPA - 단방향 one-to-one
@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 부분 2.2.5.1. 1-1. 나는 OpenQuestion을 계속 될 경우
는, 나는 열 id
, id
, answerContent
와 questionContent
및 OpenQuestionAnswer와 테이블 OpenQuestion를 얻을 수 있지만, 식별자의 값이 일치하지 않습니다.
그래서 나는 어디에서 실수하고 있습니까?
전자 코드입니다. – Andna
@MappedSupperClass도 필요합니다. 제 수정 된 답변을 참조하십시오. 나에게 그것에 대해 생각 나게 할 시간을 가졌다. –
MappedSuperClass를 사용할 수 없으며 엔티티에 주석이없는 클래스에 매핑을 사용할 수없고 QuestionUnits의 ArrayList를 가진 QuestionList 클래스가 있습니다. – Andna