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

在HQL上进行内部选择

慕宏峻
2023-03-14
问题内容

我想用HQL做这样的事情:

SELECT *
FROM tableA a
INNER JOIN (select fieldA, sum(fieldB) as sum from tableB) b
ON a.fieldA = b.fieldA and a.fieldC = b.sum;

但这给出了一个错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: (...

有什么办法可以使用HQL和Hibernate做到这一点?


问题答案:

尝试使用 本机SQL 解决方案方法:

需要首先导入以下内容:

import org.hibernate.SQLQuery;

然后在代码中的某处:

SQLQuery query = session.createSQLQuery(
    "SELECT * FROM tableA a
    INNER JOIN 
    (SELECT fieldA, sum(fieldB) as sum from tableB) b
    ON a.fieldA = b.fieldA and a.fieldC = b.sum"
);

有关此链接的更多信息,请点击
此处(加入Hibernate查询语言)



 类似资料:
  • 问题内容: 我试图在一个列上内部联接两个表。从数据库方面来看,没有映射,因为这是我不想讨论的。 我想使用INNER JOIN执行HQL查询并检索ROLE对象/结果。 到目前为止,这是我的总部 session.createQuery(“ ROLE作为角色,INNER JOIN INVOLVEMENT作为参与角色,id。X =参与.roleid WHERE参与.id = X”)。list(); 我看到

  • 如何在临时文件中获取名称以便在此查询中设置? 谢谢。

  • 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我尝试用多种方法构建工作选择查询,但仍然不起作用。 也许实体有问题?

  • 问题内容: HQL可以在另一个查询的结果集上进行选择吗? 例如: 我可以在SQL中完成此操作,但是当我在HQL中尝试以上操作时,它只是向我显示语法错误“意外的令牌:(靠近第1行,第22列…”) 问题答案: HQL确实支持子查询,但是它们只能出现在select或where子句中。您提供的示例最好以HQL的直接陈述形式编写。例如: 如果查询所涉及的语句比复杂,我建议将该逻辑放入视图中,然后根据该视图创

  • 问题内容: 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我试图以多种方式构建有效的选择查询,但仍然无法正常工作。 实体有问题吗? 问题答案: 连接只能在实体之间存在关联时使用。您的Employee实体不应将名称为,类型为的字段映射到列。它应该与Team实体具有ManyToOne关联,并映射为Jo

  • 问题内容: 我有2个实体:汽车和车轮(oneToMany),我想检索我的汽车,其中有所有车轮,并且(这是棘手的部分)由wheels.location排序。下面的代码引发异常,并显示消息“非法尝试取消引用集合”。 任何想法如何做到这一点,如果这可以在HQL中进行? 问题答案: