조사를 만들려고합니다. 설문 조사는 일련의 질문으로 구성됩니다. 각 질문은 차례로 답변 값 모음으로 구성됩니다.유일하지 않은 모든 열이있는 @jointable 사용
@OneToMany()
@JoinTable(
name = "survey_question_list",
joinColumns = @JoinColumn(name = "survey_id"),
inverseJoinColumns = @JoinColumn(name = "question_list_id"))
private Collection<Question> questionList = new ArrayList<Question>();
을 나는 각각의 질문에 Answervalues을 연결 한 같은 방법으로 : 내가 원하는대로
@OneToMany()
@JoinTable(
name = "question_answer_value_list",
joinColumns = @JoinColumn(name = "question_id"),
inverseJoinColumns = @JoinColumn(name = "answer_value_list_id"))
private Collection<AnswerValue> answerValueList = new ArrayList<AnswerValue>();
테이블이 데이터베이스에 작성됩니다
나는이 같은 설문 조사 질문에 묶여있다 그 (것)들 : 설문 ID는 응답 ID와 묶인 질문 ID 및 질문 ID에 묶여 있습니다.
내 문제는 내가 다음과 같은 오류를 얻을 수 있습니다 :
enteorg.mariadb.jdbc.internal.util.dao.QueryException: Duplicate entry '1' for key 'UK_eky8oymsfv24p3r4by54m15ta'
Query is: insert into question_answer_value_list (question_id, answer_value_list_id) values (?, ?), parameters [2,1]
내가 볼 문제가 ID 중 하나가 여러 개의 동일한 ID에 대한 dissallows있는 유일한 것입니다. 그러나 각 질문을 가능한 답변으로 매핑해야합니다. 즉, 질문 ID와 답변 ID가 모두 여러 번 나타나야합니다. 예 : 만약 질문 1과 질문 2 3 가능한 대답은 다음 매핑과 같을 것이다있다 :
Question_Id Answer_Value_Id
1 1
1 2
1 3
2 1
2 2
2 3
etc. etc.
가 어떻게이 가능하도록 테이블을 변경할 수 있습니까? 편집
:
@RequestMapping("/createsurvey2")
public Survey createSurvey2() {
Survey survey = new Survey();
survey.setName("My First Survey");
// surveyRepository.save(survey);
AnswerValue answerValue1 = new AnswerValue(1);
answerValueRepository.save(answerValue1);
Question question1 = new Question();
question1.setQuestionContent("Was the Meeting Helpful?");
question1.addAnswerValue(answerValue1);
questionRepository.save(question1);
survey.addQuestion(question1);
Question question2 = new Question();
question2.setQuestionContent("Was the Meeting Horrible?");
questionRepository.save(question2);
question2.addAnswerValue(answerValue1);
questionRepository.save(question2);
survey.addQuestion(question2);
Question question3 = new Question();
question3.setQuestionContent("Was the Meeting Funny?");
questionRepository.save(question3);
question3.addAnswerValue(answerValue1);
questionRepository.save(question3);
survey.addQuestion(question3);
surveyRepository.save(survey);
return survey;
}
따라서 질문 1과 질문 2의 답변이 동일한 것으로 예상됩니까? 높은 수준의 개념에서 모델에 적합한가? –
또한이 엔티티로 무엇을하고 있는지에 따라 다릅니다. 이러한 객체를 생성하기위한 논리를 제공 할 수 있습니까? –
위의 수정을 참조하십시오. –