Tôi có SQL sau đây mà tôi đang gặp sự cố khi chuyển đổi thành HQL. NPE bị ném - điều tôi nghĩ có liên quan đến hàm SUM. Ngoài ra, tôi muốn sắp xếp trên bí danh lựa chọn - điều này có khả thi không?Chuyển đổi SQL với chọn lựa trong HQL
SQL (subselect):
SELECT q.title, q.author_id,
(SELECT IFNULL(SUM(IF(vote_up=true,1,-1)), 0)
FROM vote WHERE question_id = q.id) AS votecount
FROM question q ORDER BY votecount DESC
HQL (không hoạt động)
SELECT q,
(SELECT COALESCE(SUM(IF(v.voteUp=true,1,-1)), 0)
FROM Vote v WHERE v.question = q) AS votecount
FROM Question AS q
LEFT JOIN q.author u
LEFT JOIN u.blockedUsers ub
WHERE q.dateCreated BETWEEN :week AND :now
AND u.id NOT IN (
SELECT ub.blocked FROM UserBlock AS ub WHERE ub.blocker = :loggedInUser
)
AND (u.blockedUsers IS EMPTY OR ub.blocked != :loggedInUser)
ORDER BY votecount DESC
chỉ vì tò mò: tại sao bạn muốn dịch một truy vấn sql ngắn gọn trong truy vấn phức tạp và phức tạp như vậy? – bertolami
bạn có thể giúp tôi với http://stackoverflow.com/questions/23303315/hql-query-sum-of-two-sub-select này không –