Spring repo中的“ID不在resultset”错误,但在PGA中有效
我得到了一个非常基本的查询,它得到了前10个搜索词: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。我在其他主题中发
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