5

私は現在、次のオブジェクトを正常に永続化しています。

  • 人名
  • 試験のタイトル、日付など。

次に、3番目のテーブルの試験結果を作成します。この表では、個人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:タイプを判別できませんでした:Person、テーブル:ExamResult、列:[org.hibernate.mapping.Column(person)]

私はこれを間違った方法で行っているかもしれないと思いますが、 チュートリアルからこの関係を進める方法を理解することはできません。

何か案は?

4

1 に答える 1

11

@Id同じエンティティに複数の注釈を含めることはできません。代わりに複合IDを使用してください。 例。

于 2010-03-16T20:23:58.090 に答える