Sql Hibernate无法执行从终端正常执行的查询

Sql Hibernate无法执行从终端正常执行的查询,sql,hibernate,spring-boot,jpa,Sql,Hibernate,Spring Boot,Jpa,我有一个SpringBoot项目(在linux上)和一个简单的数据库,它由两个实体组成——谚语和标签。Saying可以有多个标签,每个标签可以用来标记多个Saying,所以它是多对多关系。表saying_tags用于使用其ID连接saying和tags 当我尝试使用此查询选择具有完全指定标记的所有语句,并且该查询选择了某些内容(结果不是空的)时,hibernate会抛出异常,原因是:java.sql.SQLException:Column'id'not found。但Columnid在该查询中甚

我有一个SpringBoot项目(在linux上)和一个简单的数据库,它由两个实体组成——谚语和标签。Saying可以有多个标签,每个标签可以用来标记多个Saying,所以它是多对多关系。表
saying_tags
用于使用其ID连接saying和tags

当我尝试使用此查询选择具有完全指定标记的所有语句,并且该查询选择了某些内容(结果不是空的)时,hibernate会抛出异常,原因是:java.sql.SQLException:Column'id'not found。但Column
id
在该查询中甚至不存在。当我尝试从终端或DBeaver执行它时,它工作正常,并返回我所期望的结果

我甚至尝试用精确的参数对查询进行硬编码,以确保hibernate没有改变查询中的任何内容,但仍然失败。当hibernate将查询记录到控制台,并且在终端中运行良好时,我会复制查询

这是一个带有硬编码值的查询,以及一个接口内的方法,该接口扩展了执行该查询的
JpaRepository

@Query(value="select saying_id from saying_tags group by saying_id having count(distinct case when tags_id in (33) then tags_id else 0 end) = 1 and min(case when tags_id in (33) then tags_id else 0 end) > 0", nativeQuery=true)
public List<Saying> getSayingsContainingExactlyGivenTags();
@Query(value=“从sayid标签组中选择sayid,方法是:sayid具有计数(当(33)中的tags\u id然后tags\u id else 0 end)=1和min(当(33)中的tags\u id然后tags\u id else 0 end的case)>0”,nativeQuery=true)
公共列表GetSayingContainingExactlyGiventags();

您的查询投影了一个名为
的标量值,表示id
,但您返回了一个
列表,其中包含
表示的
实体。您的投影应该包括
Saying
实体中的所有属性。您可能还需要
@SqlResultSetMapping
以确保将结果集正确映射到实体。

您如何使用Hibernate执行此查询。@M.Deinum我有一个扩展JpaRepository的接口,以及一个带有
@query(value=“query”,nativeQuery=true)
。请将该代码添加到您的问题中。