在JPQL中按COUNT排序

时间:2015-05-12 14:49:05

标签: hibernate jpa count group-by jpql

我与News的一对多关系中有Comments个实体。 我的目标是根据评论数量对News进行排序。 以下查询有效,但它显然只返回ID,而不是所有News'字段:

SELECT news.id 
    FROM News news JOIN news.comments comments
    GROUP BY news 
    ORDER BY COUNT(comments) DESC

如果我将news.id替换为news,则会出现错误:

SqlExceptionHelper:146 - ORA-01034: ORACLE not available

如何在单个查询中获取整个已排序的News实体,而不仅仅是ID?

(数据库:Oracle XE,持久性提供程序:Hibernate)

1 个答案:

答案 0 :(得分:1)

作为@thanhnguyen said

  

如果你在GROUP BY中传递一个实体,Hibernate会自动将其id添加到底层数据库的转换后的SQL中。此外,GROUP BY中的值必须存在于SELECT子句中。因此,您可以选择其ID,而不是选择整个对象,然后从这些ID中,您可以再次检索该对象。

这可能表明您想做的事情是不可能的。