当前位置: 首页 > 知识库问答 >
问题:

如何使用Hibernate中的查询结果执行实体的连接

燕星鹏
2023-03-14

我想在hibernate中运行以下SQL:

SELECT c.id, c.name, ipc.total 
FROM Category c,
(
    SELECT comm.category.id as id, count(*) as total 
    FROM Commerce as comm 
    GROUP BY comm.category.id 
) ipc 
WHERE c.id = ipc.id

这是我试图用JQL编写的,但是我得到了一个错误。它似乎不喜欢我针对查询结果的连接。

请求处理失败;嵌套的异常是java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySynahException:意外令牌:(第1行附近,第86列[SELECTc.id,c.name,ipc.total来自com.brujulasolutions.directorio.model.类别c,(SELECTcomm.category.idid, count(*)as总计fromcom.brujulasolutions.directorio.model.Commerce as comm GROUP BYcomm.category.id)ipc WHEREc.id=ipc.id]

SELECT c.id, c.name, ipc.total 
FROM Category c,
(
    SELECT comm.category.id as id, count(*) as total 
    FROM Commerce as comm 
    GROUP BY comm.category.id 
) ipc 
WHERE c.id = ipc.id

共有1个答案

刘高驰
2023-03-14

Hibernate查询语言不直接支持这种类型的更新连接。相反,我们可以在select子句中使用相关子查询:

SELECT c.id, c.name,
       (SELECT COUNT(*)
        FROM Commerce AS comm
        WHERE comm.category.id = c.id) AS total
FROM Category c
 类似资料:
  • 我的桌子描述是 我的疑问是 如何使用hibernate执行此查询。Hibernate应该返回类型为的对象列表。?

  • 问题内容: 如果我的查询包含一个类,例如: 然后我迭代它,那里是一个类的对象。 那么如何从包含多个类的查询中获取结果呢?例如: 问题答案: for (Object[] result : query.list()) { User user = (User) result[0]; Group group = (Group) result[1]; }

  • 问题内容: 我应该将“如果查询结果行IS = 1进行验证的代码”替换为什么? 我已经尝试过使用num_rows的多种方法,但无法正常工作。 我的PHP代码: 问题答案: 要么

  • 在程序中有一部分代码,用于执行查询: 数据集 () 表应该有大约 20000 条记录(行计数),但在程序内部,它在调试模式下说只有 20 条记录。 我在同一个数据库表上单独运行了脚本,该表在 SQL Server 连接字符串中使用,但在 SQL Server Management Studio 中,它按预期返回了 20000 条记录。 该脚本看起来像: 它是相同的脚本文本,代码也会执行该文本。 有

  • 问题内容: 我使用MSSQL和ADO运行各种SQL语句。 代码序列如下所示: 如果SQL返回结果为空,则最后一条语句将失败。如何检查这种情况以避免运行时错误? 注意:SQL语句来自用户在其中键入SQL的备忘录。 问题答案: 如果您的查询返回记录集(报表),你应该 不 使用,而只是或。 对于不返回记录集例如查询/ / ,使用。在大多数情况下,您会通过查询返回。 其他SQL语句,你应该使用是/ / /

  • 问题内容: 考虑表 这是使用查询生成的视图 我想为总销售额创建一个实体,但没有sql端的视图。 该实体将通过查询构造。我发现的最接近的东西是 this ,但是我无法使其工作。 即使我定义了加载器,hibernate也会查找实体表并在找不到时给出错误。如果我创建表,它不会从我定义的命名查询中加载实体,Hibernate会生成查询本身。 有没有一种方法可以使@Loader工作,或者有另一种我可以将查询