gpt4 book ai didi

java - 如何在 JPA 中按 count() 排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:50 26 4
gpt4 key购买 nike

我正在使用这个 JPA 查询:

SELECT DISTINCT e.label FROM Entity e 
GROUP BY e.label
ORDER BY COUNT(e.label) DESC

我没有得到任何错误,结果排序几乎正确,但有一些值是错误的(两个值被翻转或一些单个值完全错位)

编辑:

将 COUNT(e.label) 添加到我的 SELECT 子句解决了这个查询的这个问题。

但在同样包含 WHERE 子句的类似查询中,问题仍然存在:

SELECT DISTINCT e.label, COUNT(e.label) FROM Entity e 
WHERE TYPE(e.cat) = :category
GROUP BY e.label
ORDER BY COUNT(e.label) DESC

最佳答案

您可能需要在 SELECT 子句中包含 COUNT(e.label):

SELECT DISTINCT e.label, COUNT(e.label) 
FROM Entity e
GROUP BY e.label
ORDER BY COUNT(e.label) DESC

更新:关于第二个查询,请阅读 8.6. Polymorphic queries 部分EntityManager 文档。看起来,如果您以需要多个 SELECT 的方式进行查询,那么 ORDER BY 将不再起作用。使用 TYPE 关键字似乎就是这种情况。引用上面的链接:


以下查询将返回所有持久对象:

from java.lang.Object o // HQL only

Named 接口(interface)可能由各种持久类实现:

from Named n, Named m where n.name = m.name // HQL only

请注意,最后两个查询将需要多个 SQL SELECT。 这意味着 order by 子句没有正确地对整个结果集进行排序。(这也意味着您不能使用 Query.scroll() 调用这些查询。)


关于java - 如何在 JPA 中按 count() 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com