Spring repo中的“ID不在resultset”错误,但在PGA中有效

Spring repo中的“ID不在resultset”错误,但在PGA中有效,spring,postgresql,Spring,Postgresql,我得到了一个非常基本的查询,它得到了前10个搜索词: select distinct keyword, sum (amount) as keyword_amount from search group by keyword order by keyword_amount DESC 这在PostGresAdmin 4中效果很好,我获得了前10名。但当我想在Spring上通过Postman在端点上测试它时,它总是给我500个错误。它表示在聚合函数中找不到和/或应该在组中或使用ID。我在其他主题中发

我得到了一个非常基本的查询,它得到了前10个搜索词:

select distinct keyword, sum (amount) as keyword_amount from search group by keyword order by keyword_amount DESC
这在PostGresAdmin 4中效果很好,我获得了前10名。但当我想在Spring上通过Postman在端点上测试它时,它总是给我500个错误。它表示在聚合函数中找不到和/或应该在组中或使用ID。我在其他主题中发现,我需要使用“distinct”或将ID置于min/max中。但仍然没有成功,更奇怪的是,它在PostGreSQL本身中也能工作

我试过:

@Query( value = "select distinct keyword, sum (amount) as keyword_amount from search " +
        "group by keyword order by keyword_amount DESC",
        nativeQuery = true
)
List<Search> findTop10Keywords();
我不确定为什么/在哪里必须映射搜索?

选择关键字,sumamount作为关键字\u amount 从搜索-? 按关键字分组 按关键字排序\u金额描述上次为空 限制10; 由于您已经按关键字分组,添加distinct是一项昂贵的禁止操作。请删除它

sumamount可能为空。如果可能发生这种情况取决于未披露的详细信息,请确保使用ORDER BY关键字_amount DESC NULLS LAST。见:

似乎可以安全地假设一个名为indTop10Keywords的查询应该只返回前10名。所以限制10


即使在Postgres中允许作为标识符,搜索也是标准SQL中的一种。也许这就是春天的来龙去脉。重复引用可能会有所帮助。但我宁愿从一开始就避免使用保留字作为标识符。

没有想到保留字,我将其改为“搜索词”。但通过上面的代码,Spring告诉我以下内容:至少提供了1个参数,但查询中只有0个参数。它指的是什么?你要多少钱?它使用的方法是:列出findTop10Keywords;但这也不使用参数。我很困惑。我不太了解Spring,但错误消息清楚地表明您提供了一个参数,而查询没有使用参数。所以在不传递参数的情况下调用它。我在这里找到了解决方案:。需要制作一个接口或替换为。但它不接受限制10。但就我所能找到的而言,我需要添加“nativeQuery=true”
search is not mapped [select distinct keyword, sum (amount) as keyword_amount from search group by keyword order by keyword_amount DESC