Hibernate - фильтрация по связанному свойству - PullRequest
2 голосов
/ 23 марта 2010

У меня есть класс ExamResult, который имеет ссылку на своего родителя Exam.

Я хочу фильтровать по логическому свойству в результате экзамена.

List<ExamResult> examResults = session
                    .createCriteria(ExamResult.class)
                    .createCriteria("exam") // 3.
                    .add( Restrictions.eq("primaryExam", Boolean.TRUE) ) // 4.
                    .list();

Я могу получить все строки без добавления строк 3 и 4. С этими дополнительными строками я получаю следующую ошибку:

org.hibernate.QueryException: not an association: exam

Я не уверен, правильно ли я поступлю. учебник гибернации мне неясен.

Отношения, которые я использовал, можно увидеть в этом уроке .

ExamResult имеет:

// bidirectional association! Needed to trick hibernate ;P
@Column(name="exam_id", nullable=false, updatable=false, insertable=false)
private Long exam;

Экзамен имеет

//----bidirectional association
@OneToMany(mappedBy="exam")
private final List<ExamResult> examResults = new ArrayList<ExamResult>();

1 Ответ

3 голосов
/ 23 марта 2010

Проблема в том, что в вашем ExamResult отображении должно быть:

@Column(name="exam_id", nullable=false)
private Exam exam;

В противном случае ваши критерии выглядят хорошо, если у вас есть логическое свойство primaryExam в Exam.

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