我正在尝试使用HQL(Hibernate查询语言)在两个表之间创建一个联盟.此SQL脚本在我的SQL服务器上正常工作:
SELECT COUNT(DISTINCT linkedin_id) as test, school_name
FROM
(SELECT * FROM alum_education
UNION
SELECT * FROM alum_connection_educations) AS UNIONS where school_name='some string'
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试在这样的grails中运行它:
def countOfEdu = AlumEducation.executeQuery("select count (distinct linkedinId ) as countOfEdu, schoolName as SchoolName from (SELECT * FROM alumEducation UNION SELECT * FROM alumConnectionEducations) AS UNIONS where schoolName='some string'" )
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ( near line 1, column 83 [select count(distinct linkedinId ) as countOfEdu, schoolName as SchoolName from (SELECT * FROM alumEducation UNION SELECT * FROM …
Run Code Online (Sandbox Code Playgroud) 我有三个表: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查询.
我有2个实体:EntityA和EntityB.
它们是无关的,我不能将它们放在继承树中,因为某些限制超出了本问题的范围.
但是我需要在同一个JPQL或HQL查询中获得包含两个实体的所有实例的混合List.这可能是JPA甚至直接使用Hibernate吗?
我需要这样的东西:
FROM EntityA WHERE fieldA=1
UNION
FROM EntityB WHERE fieldB="aa"
Run Code Online (Sandbox Code Playgroud)
任何提示?
嗨,我想在HQL中排序
ORDER BY IF g.groupAdminId=:adminid THEN 1 ELSE 0 END ASC
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我希望拥有用户首先管理员的所有实体,我怎样才能实现这一目标?