Hibernate - 按关联属性过滤

时间:2010-03-23 18:32:20

标签: java hibernate

我有一个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

我不确定我是否正确地走这条路。我不清楚hibernate tutorial

我使用的关系可以在this tutorial中找到。

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 个答案:

答案 0 :(得分:3)

问题是您的ExamResult映射应该是:

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

否则,假设primaryExam中有布尔属性Exam,您的条件看起来很好。