Hibernate - 如何从连接表引用集合?

时间:2012-11-19 14:39:41

标签: hibernate

我有一个模型,其中考试有多对多的问题映射,每个question_exam组合可以有很多结果(例如,考试1中的问题1可以回答10次,因此将有10个结果)。基本模型类位于

之下
Exam{
    exam_id
}

Question{
    question_id
}    

Result{
id
    exam_id
    question_id
    dateentered
}

我可以轻松地创建考试和问题之间的关系,hibernate使用我创建的名为exams_questions的连接表。我的问题是将结果链接到exams_questions表。例如,如果我想获得具有以下结构的考试对象: 考试 - 问题 - 成绩(仅适用于与考试相关的问题)

如何编写我的映射以允许我将考试作为一个问题收集对象,这些问题有结果集(仅适用于该考试)?

我查看过具有额外列和三元关联的联接表,但我认为它们并没有为我提供我需要的东西。

提前致谢

1 个答案:

答案 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;
}

上面将每个关联映射为双向关联,但您当然可以选择使它们成为单向关联。