5

我目前有以下对象成功持久化:

  • 人名
  • 考试名称、日期等

我现在想创建第三张表Exam results。对于这张表,我认为应该是人员 ID、考试 ID 和结果,这是多对多的关系。

@Entity
public class ExamResult {
    private Exam exam;
    private Person person;
    private double value;

    @Id
    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinColumn(name="EXAM_ID")
    public Exam getExam() {
        return exam;
    }
    public void setExam(Exam exam) {
        this.exam = exam;
    }

    @Id
    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinColumn(name="PERSON_ID")
    public Person getPerson() {
        return person;
    }
    public void setPerson(Person person) {
        this.person = person;
    }

    public double getValue() {
        return value;
    }
    public void setValue(double value) {
        this.value = value;
    }
}

错误:

org.hibernate.MappingException:无法确定类型:人员,在表:ExamResult,列:[org.hibernate.mapping.Column(person)]

我想我可能会以错误的方式解决这个问题,但我无法从 教程中弄清楚如何处理这种关系。

有任何想法吗?

4

1 回答 1

11

同一实体中不能有多个@Id注释。请改用复合 ID。 例子。

于 2010-03-16T20:23:58.090 回答