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

Hibernate-查询工作在MySQL工作台,但Hibernate抛出异常

郭知
2023-03-14

我正在使用以下命名查询:

@NamedQuery(name="FseLiveLocation.findByMultipleIds", query = "SELECT f FROM FseLiveLocation f inner join (SELECT max(fl.id) ide FROM FseLiveLocation fl WHERE fl.fseInfoId IN (:fseInfoList) GROUP BY fl.fseInfoId) j on f.id=j.ide")

该查询在mysql中运行良好:

select f.* from fse_live_location f join (SELECT max(fl.id) as ide FROM Fse_Live_Location fl WHERE fl.fse_Info_Id IN
(12578740, 24910) GROUP BY fl.fse_Info_Id) as j on f.id=j.ide

但当我试图运行我的代码时,我得到了QuerySyntaxException:

共有1个答案

孟花蜂
2023-03-14

该查询只是无效的HQL。HQL不支持FROM子句中的子查询。不过,您可以重写此查询:

@NamedQuery(name="FseLiveLocation.findByMultipleIds", query = "SELECT f FROM FseLiveLocation f where f.id IN (SELECT max(fl.id) ide FROM FseLiveLocation fl WHERE fl.fseInfoId IN (:fseInfoList) GROUP BY fl.fseInfoId)")
 类似资料:
  • 它的灵感来自spring-data-jpa-examples/src/main/resources/caching-repository-context.xml 看日志;每次请求时,我都会看到查询被执行。 下次我请求时,我看到以下查询;

  • 我变得非常困惑,我试图通过laravels query builder运行一个应该可以工作的查询,但它会抛出奇怪的错误。

  • 我一直在尝试从1000行的表中获取100到200行作为示例。我在网上找到了这个代码片段,它在PHPMyAdmin中似乎工作得很好,但当我试图在代码中使用它时,它就不起作用了。 这是我的PHP代码 当我尝试执行$query=mysql\u query($q)或死亡(mysql\u error())时,我什么也得不到。 任何对此的帮助都是非常感激的 编辑:使用限制100100解决。谢谢各位

  • 我在Hibernate4.0.1中遇到了本地查询问题。我有查询工作在数据库控制台,但不是在应用程序。我有: 名为“case”的表有两列指向同一个表--名为“cost”的表,其列为“value”。我的查询如下所示: 有人提到,'value'不是列的专有名称。这是真的,事实上这个列不是名为'value',而是有点不同。我的严格合同禁止发布任何关于代码的信息。我必须尽可能地释义它,所以我在fly中重命名

  • 我有一个非常简单的实体,其注释与我在将其添加到项目之前使用的注释完全相同。在添加FK constaint时,我得到下面显示的堆栈跟踪,也有未显示的堆栈跟踪。无论我是使用原语还是对象作为索引,都会发生错误。一切似乎都是对的,有人能启发我吗?泰。 组织。冬眠工具架构。spi。CommandAcceptanceException:通过org上的JDBC语句执行DDL“create table user(

  • 在  Hibernate操作数据库一节的学习中,我们主要涉及到了 Configuration、SessionFactory、Session、Transaction 和 Query 等多个接口,这些接口在 Hibernate 运行时都扮演着十分重要的角色,本节我们就来介绍以一下 Hibernate 运行时的工作原理。 关于 Configuration、SessionFactory、Session、T