Отображение гибернации - «Не удалось определить тип» - PullRequest
5 голосов
/ 16 марта 2010

У меня в настоящее время успешно сохраняются следующие объекты:

  • Персона Имя и т. Д.
  • Экзамены Название, дата,и т.д.

Я бы хотел сейчас создать третью таблицу Результаты экзаменов .Я полагаю, что для этой таблицы должны быть указаны личность, экзамен и результат, и это отношение многих ко многим.

@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)]

Я думаю, что возможноЯ поступаю неправильно, но я не могу понять, как поступить с этими отношениями из учебника .

Есть идеи?

1 Ответ

11 голосов
/ 16 марта 2010

Вы не можете иметь несколько @Id аннотаций в одной и той же сущности. Вместо этого используйте составной идентификатор. Пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...