gpt4 book ai didi

java - 对 Hibernate(和 JPA)标准的表达能力的限制?

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:37 25 4
gpt4 key购买 nike

我在这样的层次结构中有 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 的方法

这是 Criteria API 的限制吗?还是只是我迷路了?有什么提示吗?

最佳答案

如果您的映射中的每个子类都有一个鉴别器值(例如,Child1 为 1,Child2 为 2,Child3 为 3),您可以在 HQL/Criteria 中使用特殊属性“类”。

因此条件查询可能是这样的:

session.createCriteria(Parent.class)
.add(Restrictions.or(Restrictions.eq("class", 1),
Restrictions.eq("class", 2)))

并且您的 HQL 查询得到简化:

FROM parent WHERE class = 1 OR class = 2

关于java - 对 Hibernate(和 JPA)标准的表达能力的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com