如何在 Hibernate 的“from”子句中使用子查询?

问题描述 投票:0回答:2

我有三张桌子:

class
student
teacher

table class
{
    class_id(PK)
}

table student
{
    student_id(PK)
    class_id(PK+FK)
}

table teacher
{
    teacher_id(PK)
    class_id(PK+FK)
}

我有一个 SQL 查询,运行良好。

SELECT data.class_id, count(data.class_id) AS count
FROM ((SELECT class_id FROM student)
        union all
        (SELECT class_id FROM teacher)) AS data
GROUP BY data.user_id
ORDER BY count desc

查询包含

from
子句
union
操作
中的子查询。 我无法将其转换为 HQL。

请给我上面 SQL 查询中的高效 HQL 查询。

java sql hibernate subquery hql
2个回答
8
投票

不幸的是HQL不支持UNION查询。解决您的问题的两种替代策略是:

  • Pojo 映射到视图
  • 继承映射。特别是由 Person

    Student
    继承的抽象
    Teacher
    超类的
    每个具体类的表
    策略似乎很适合您的问题:

    select p.id, count(c)
    from Person p join p.classes c
    group by p.id
    order by count(c) desc
    

7
投票

您不能在 HQL 中的

from
子句中放置子查询。仅
select
where
子句。

© www.soinside.com 2019 - 2024. All rights reserved.