use*_*000 10 java sql hibernate hql subquery
我有三个表: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)
}
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
该查询包含from子句和union操作中的子查询.我无法将其转换为HQL.
请从上面的SQL查询中给我高效的HQL查询.
不幸的是,HQL不支持UNION查询.解决问题的两种替代策略是:
或继承映射.特别是每个具有抽象Person超类的具体类策略的表继承了Student并且Teacher似乎很适合您的问题:
select p.id, count(c)
from Person p join p.classes c
group by p.id
order by count(c) desc
Run Code Online (Sandbox Code Playgroud)