我有一个模型,其中考试有多对多的问题映射,每个question_exam组合可以有很多结果(例如,考试1中的问题1可以回答10次,因此将有10个结果)。基本模型类位于
之下Exam{
exam_id
}
Question{
question_id
}
Result{
id
exam_id
question_id
dateentered
}
我可以轻松地创建考试和问题之间的关系,hibernate使用我创建的名为exams_questions的连接表。我的问题是将结果链接到exams_questions表。例如,如果我想获得具有以下结构的考试对象: 考试 - 问题 - 成绩(仅适用于与考试相关的问题)
如何编写我的映射以允许我将考试作为一个问题收集对象,这些问题有结果集(仅适用于该考试)?
我查看过具有额外列和三元关联的联接表,但我认为它们并没有为我提供我需要的东西。
提前致谢
答案 0 :(得分:2)
您应该拥有以下关联:
Exam {
id;
@OneToMany(mappedBy = "exam")
Set<ExamQuestion> examQuestions;
}
Question {
id;
@OneToMany(mappedBy = "question")
Set<ExamQuestion>;
}
ExamQuestion {
id;
@ManyToOne
Question question;
@ManyToOne
Exam exam;
@OneToMany(mappedBy="examQuestion")
Set<Result> results;
}
Result {
id
@ManyToOne
ExamQuestion examQuestion;
}
上面将每个关联映射为双向关联,但您当然可以选择使它们成为单向关联。