JPA中的ORDER BY COUNT不会返回预期结果

时间:2013-03-10 21:10:21

标签: java mysql jpa sql-order-by

我在使用JPA创建的查询时遇到了困难。查询如下所示:

 Query q = em.createQuery("SELECT tr FROM Trend tr JOIN tr.tweet tw WHERE tw.postDate > 'week ago' GROUP BY tr.trend ORDER BY COUNT(tr) DESC", Trend.class);

我正在创建一个类似于Twitter的应用程序。我想要的是过去一周的趋势列表。所有趋势都存储在单独的数据库表中。通过使用上述查询,我​​希望得到过去一周按发生顺序排序的所有趋势。但是,只返回一个趋势。

当我省略ORDER BY COUNT(tr)部分时,我确实找回了所有趋势。但是,这包括重复项,列表不按发生顺序排序。所以这不会返回我想要的结果。

这个(我的)SQL查询似乎有效:

SELECT tr.trend FROM Trends tr JOIN Tweets tw ON tw.id = tr.tweet_id WHERE tw.postDate > 'week ago' GROUP BY tr.trend ORDER BY COUNT(tr.trend) DESC

对我来说,这与上面的JPA查询相同,尽管结果完全不同。我也可以使用ORDER BY COUNT(*),但星号在JPA中不起作用。

请注意,对象的名称是“Trend”,而表名是“Trends”,Tweet / Tweets也是如此:所以这不是问题:)。此外,'周前'是一个正确的MySQL日期,非常适合。

希望任何人都可以帮助我的JPA查询以我想要的方式工作。提前谢谢!

0 个答案:

没有答案