3

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

Exam{
    exam_id
}

Question{
    question_id
}    

Result{
id
    exam_id
    question_id
    dateentered
}

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

如何编写我的映射以允许我获得一个带有问题集合的考试对象,并且这些问题具有结果集合(仅适用于该考试)?

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

提前致谢

4

1 回答 1

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

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

于 2012-11-19T15:15:34.010 回答