我在层次结构中有 4 个实体,如下所示:
Parent
|
------------------------
| | |
Child1 Child2 Child3
我有兴趣检索 Child1 和 Child2 的所有实例(但不是 Child3 实例),其条件为单一查询.
使用 HQL(或 JPQL)很容易做到这一点,如下所示:
FROM Parent obj
WHERE obj IN (FROM Child1 where fieldOfChild1="aa") OR
obj IN (FROM Child2 where fieldOfChild2=55)
我研究了 Hibernate Criteria 和 JPA Criteria API,并且我找不到一种方法来将此查询表达为条件.
这是 Criteria API 的限制吗?还是只是我迷路了?有什么提示吗?
如果映射中的每个子类都有一个鉴别器值(例如,Child1 为 1,Child2 为 2,Child3 为 3),则可以在 HQL/Criteria 中使用特殊属性“class”。
所以条件查询可能是这样的:
session.createCriteria(Parent.class)
.add(Restrictions.or(Restrictions.eq("class", 1),
Restrictions.eq("class", 2)))
您的 HQL 查询也得到了简化:
FROM parent WHERE class = 1 OR class = 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)