在Hibernate Criteria查询中限制关联的类

时间:2010-06-17 13:46:02

标签: java hibernate criteria

我有一个对象'Response',它有一个名为'submitter'的属性。提交者可以是几个不同的课程之一,包括学生,教师等......

我希望能够执行条件查询,我只选择教师提交的响应 - 这意味着对相关实体设置类限制。有什么想法吗?我想远离直接SQL或HQL。

2 个答案:

答案 0 :(得分:2)

According to Gavin King,以下内容适用于HQL:

where foo.class in (...)

你试过吗

c.createCriteria("submitter").add(Restrictions.eq("class", Teacher.class))

答案 1 :(得分:0)

我最终使用的是原生SQL。不是最伟大的,但也不是很可怕:

Criteria c = session.createCriteria(Response.class);
c.createCriteria("submitter").add(Restrictions.sqlRestriction("{alias}.person_type='student'"));

值得注意的是,这只能起作用,因为我正在使用table-per-inheritance-hierarchy映射策略。没有它,我就不会有一个鉴别器专栏。