我有一个对象'Response',它有一个名为'submitter'的属性。提交者可以是几个不同的课程之一,包括学生,教师等......
我希望能够执行条件查询,我只选择教师提交的响应 - 这意味着对相关实体设置类限制。有什么想法吗?我想远离直接SQL或HQL。
答案 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映射策略。没有它,我就不会有一个鉴别器专栏。