多个类型/类的HQL查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个类型/类的HQL查询相关的知识,希望对你有一定的参考价值。

我有一个复杂的类层次结构,具有多个继承级别,我需要使用HQL查询该层次结构中的某些特定类型。

假设我有Cat,Dog和Monkey类,有一个共同的基类Animal。

如何编写一个只选择其中一些的查询,比方说,Cat和Dog?

我还需要按某些动物属性进行排序或过滤 - 所以让我们说,动物的性别=“男性”并按名称排序。

这可能吗?

答案

标准的JPQL函数是TYPE(),它也支持Hibernate,如documentation中所述。

请举个例子:

select a from Animal a
where type(a) in ('Cat', 'Dog')
    and a.sex = 'Male'
order by a.name

Hibernate还使用.class隐式属性:

select a from Animal a
where a.class in ('Cat', 'Dog')
    and a.sex = 'Male'
order by a.name

以上是关于多个类型/类的HQL查询的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 中使用 HQL 查询

Hibernate的HQL多表查询

Hibernate查询

类型:。net;问题:HQL;结果:HQL: Hibernate查询语言

HQL查询——查询返回对象类型分析

hql语句一次比对查询单表中多个字段