2012-05-23 3 views
0

2 개의 테이블이 있습니다. 하나는 질문 용이고 다른 하나는 가능한 답을위한 것입니다. 예를 들어 모델링 중입니다. "개를 소유하고 계십니까?" 예 아니오[ ].JPA 찾아보기 테이블 값

그래서 일련의 질문과 가능한 답변이 있습니다. JPA에서 이것을 어떻게 표현할 수 있는지 알고 싶습니다 (이 질문은 답변을 캡처하는 것이 아니라 질문을 표시하고 선택 상자를 채우는 것에 관한 것입니다).

지금까지 내가 가진 :

@Entity(name="QUESTIONS") 
public class Question { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private int order; 
    private String questionTitle; 
    private String questionText; 
    private Set<AnswerOption> possibleAnswers; 
    .... 
} 

그것은 내가에 문제가있어 private Set<AnswerOption> possibleAnswers; 부분입니다. 가능한 답변 범위가 미리 채워지도록하려면 어떻게해야합니까?

가에 대한 답변을 저장하는 설정 변수를 제공 할 것입니다 위의 모델링 방법.

내가 길을 잘못이에 대해 생각하고 있습니까? 코드를 사용하여 데이터베이스를 채우고 동일한 AnswerOption 객체를 다른 Question 객체에 할당해야합니까?

도움 주셔서 감사합니다. 아담

최대 절전 모드로

답변

1

는 본질적으로 ORM 도구입니다, 그냥 정의 된 테이블에 QuestionAnswerOption 클래스 및 인스턴스 매핑을 담당한다.

당신은 필요가 데이터, 데이터가 아닌 구조를 초기화하는 것입니다. 따라서 Question 인스턴스를 AnswerOption 인스턴스로 채우고 initQuestions() 초기화 메소드로 채워야합니다.

또한 Question이 이미 초기화되었는지 확인하는 것이 좋습니다.

+0

슈퍼 답변 매우 고맙습니다. 이것이 내가 한 일이다. 먼저'@ Transactional' 메서드를 사용하여 조회 날짜를 설정했습니다 (응답 옵션). 그런 다음'@ Transactional' 메서드를 사용하여 질문을 설정하고 가능한 답변 집합에 참여시킵니다. 'Question' 클래스보다주의해야 할 것은'@ ManyToMany' 조인을 사용하여 가능한 답변 세트를 만들어야한다는 것입니다. '@ OneToMany' (이 질문은 여러 가지 대답이있을 수 있습니다)를 사용했기 때문에 조금 혼란 스러웠습니다. 그러나'answerOption'도 많은 질문에 나타날 수 있기 때문에 조금 바보였습니다. 이봐. 도와 주신 모든 분들께 감사드립니다! –

0

JPA에서 관계를 매핑하기 전에 데이터베이스 관계형 모델링 관점에서 먼저 살펴보아야합니다. 먼저, 질문과 답변이 데이터베이스 수준에서 어떻게 연결되는지 정의해야합니다. 나는 외래 키 또는 연관 테이블을 사용한다고 가정합니다. 이런 식으로 뭔가 : 반대 (외래 키를 사용

@Entity(name="QUESTIONS") 
public class Question { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private int order; 
    private String questionTitle; 
    private String questionText; 

    @JoinTable(name = "question_answers", joinColumns = { @JoinColumn(name = "question_id", unique = true) }, inverseJoinColumns = { @JoinColumn(name = "answer_id") }) 
    private Set<AnswerOption> possibleAnswers; 
} 

주석은 :이 다음 thusly 히 JPA에 매핑 할 수있는 연관 테이블과 같은 질문과 답변 사이의 관계를 정의

CREATE TABLE questions (
    id INT NOT NULL PRIMARY KEY, 
    text VARCHAR(255) 
); 

CREATE TABLE answers (
    id INT NOT NULL PRIMARY KEY, 
    text VARCHAR(255) 
); 

CREATE TABLE question_answers (
    id INT NOT NULL PRIMARY KEY, 
    question_id INT NOT NULL, 
    answer_id INT NOT NULL, 
    KEY k_question_id (question_id), 
    KEY k_answer_id (answer_id), 
    CONSTRAINT fk_question_answers_question_id FOREIGN KEY (question_id) 
     REFERENCES questions(id), 
    CONSTRAINT fk_question_answers_answer_id FOREIGN KEY (answer_id) 
     REFERENCES answers(id) 
); 

협회 테이블에) 물론 다를 것입니다, 만약 당신이 그 경로를 떠나길 원한다면 코멘트를 남겨주세요. 이것은 당신을 시작하게하는데 충분할 것입니다.