Java 如何在特定日期通过投票点餐

Java 如何在特定日期通过投票点餐,java,hibernate,jpql,Java,Hibernate,Jpql,我有一些拥有用户投票权的餐馆。投票有现场日期。我想让餐馆按票数排序,在某一日期投票。查询是: SELECT DISTINCT r FROM Restaurant r " + "JOIN FETCH r.votes v " + "WHERE v.date=?1 " + "ORDER BY r.votes.size DESC 但它每天都以投票方式订购餐厅: order by (select count(votes2_.RESTAURANT_I

我有一些拥有用户投票权的餐馆。投票有现场日期。我想让餐馆按票数排序,在某一日期投票。查询是:

SELECT DISTINCT r FROM Restaurant r " +
        "JOIN FETCH r.votes v " +
        "WHERE v.date=?1 " +
        "ORDER BY r.votes.size DESC
但它每天都以投票方式订购餐厅:

order by
(select
    count(votes2_.RESTAURANT_ID) 
from
    votes votes2_ 
where
    restaurant0_.id=votes2_.RESTAURANT_ID) DESC

听起来你应该按餐厅进行聚合,比如:

SELECT r.name, SUM(r.votes.size) AS cnt
FROM Restaurant r
JOIN FETCH r.votes v
WHERE v.date = ?1
GROUP BY r.name
ORDER BY SUM(r.votes.size) DESC;
尝试通过联合投票进行排序:

SELECT r FROM Restaurant r, v.size as cnt
JOIN FETCH r.votes v
WHERE v.date=?1
GROUP BY r.id
ORDER BY v.size DESC
决定是:

@EntityGraph(attributePaths = {"votes"}) 
public List<Restaurant> findAllByVotes_date (Sort sort, LocalDate date); 

同样的结果是SQL?order by select countvotes2_u2;restaurant0_2;ID=votes2_2;RESTAURANT_2;ID DESCHmm。如果使用v.size,则投票表应为联接中使用的投票表。你说这是另一个。HN中存在错误,或者运行旧查询。你能把DESC改成ASC吗,只是为了确保新的查询被使用?我删除了DESC,我得到了所有日期的投票结果