当前位置: 首页 > 面试题库 >

如何在HQL中执行Union SQL语句?

金何平
2023-03-14
问题内容

我正在尝试使用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'

问题是,当我尝试像这样在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'" )

我收到此错误:

  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 alumConnectionEducations) AS UNIONS where schoolName='Duquesne University']

如何在grails中运行上述SQL语句?

谢谢杰森


问题答案:

HQL不支持联合。自2005年以来,Hibernate的JIRA中存在一个问题。



 类似资料:
  • 问题内容: 我正在使用Hibernate 3.1.1,尤其是我正在使用HQL查询。 根据文档,Hibernate的查询是多态的: 像:这样的查询不仅返回的实例,还返回像的子类的实例。 如何查询Cat的实例,但不查询其任何子类的实例? 我希望能够做到而不必明确提及每个子类。 我知道以下选项,但并不令人满意: 查询后手动过滤实例,或者: 在鉴别符列上手动添加WHERE子句。 Hibernate允许用户

  • 问题内容: 我想在hibernateHql的同一查询中执行多个更新语句。如下所示: 在同一调用中,我想更新表1中的记录并从表2中删除记录。 那可能吗? 问题答案: 简而言之,您所看到的就像是JDBC中的批处理。Hichnate没有为批量更新查询提供Thich,并且我怀疑是否会为Hibernate考虑它。 根据我过去的经验,HQL的批处理功能在现实生活中很少有用。在SQL + JDBC中有用但在HQ

  • 我有过 然后 我要集群。a只能是BlahFoo或MooFoo 我该如何执行?

  • 是否有可能基于“if”“like”语句或xslt中的等价物写出xml? 我有一个名为“cust_code”的元素,如果该元素以“HE”开头,那么我想把它写出来,否则跳到下一个。 可能吗?

  • 问题内容: 在Hibernate 3中,有没有办法等效于HQL中的以下MySQL限制? 如果可能的话,我不想使用setMaxResults。这肯定在较旧的Hibernate / HQL版本中是可行的,但似乎已经消失了。 问题答案: 几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上: 在HQL中,从不支持Limit 子句

  • 问题内容: 我需要使用其“父”表中的数据更新SQL Server中的此表,如下所示: Table: sale Table: ud 包含要更新的正确值。 什么查询将执行此操作?我正在考虑a,join但不确定是否可行。 问题答案: 语法严格取决于您使用的SQL DBMS。这里有一些在ANSI / ISO(也可以在任何SQL DBMS中使用),MySQL,SQL Server和Oracle上完成此操作的