調査を作成しようとしています。調査は一連の質問で構成されています。 各質問は、答えの集まりから成り立っています。ユニークでないすべての列で@jointableを使用する
私はこのような調査に質問を結び付けている:私が望むよう
@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>();
テーブルがデータベースに作成されています。私は、各質問にAnswervaluesを縛られているのと同じ方法で
@OneToMany()
@JoinTable(
name = "survey_question_list",
joinColumns = @JoinColumn(name = "survey_id"),
inverseJoinColumns = @JoinColumn(name = "question_list_id"))
private Collection<Question> questionList = new ArrayList<Question>();
回答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.
は、どのように私はこれを可能にするために表を変更できますか?
EDIT:ここに は私の調査のビルドの論理です:
@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が同じ回答セットを持つことを期待していますか?高レベルのコンセプトから、それはあなたのモデルにとって理にかなっていますか? –
また、これらのエンティティで何をしているかによっても異なります。これらのオブジェクトを作成するロジックを提供できますか? –
上記の編集をご覧ください。 –