我的hql查询如下所示,但它没有按a.remoteCreatedAt列对记录进行排序,如果order by子句有任何错误,请帮助我。
SELECT c
FROM Comic c
JOIN FETCH c.album a
JOIN FETCH a.media m
JOIN FETCH c.user u
LEFT JOIN FETCH a.user ow
LEFT JOIN FETCH c.channel channel
LEFT JOIN FETCH c.categories cc
WHERE a.publishedAt !=NULL
AND channel.uniqueName IN (:channelUniqueNames)
AND channel.active = TRUE
AND c.active=TRUE
AND c.visibilityType='PUBLIC'
ORDER BY CASE
WHEN a.remoteCreatedAt !=NULL THEN a.remoteCreatedAt
ELSE a.publishedAt
END DESC
最佳答案
我注意到您的 ORDER BY CASE WHEN
语句的一个问题是您试图将空值与 !=
运算符进行比较。相反,您应该使用 IS NOT NULL
:
ORDER BY CASE
WHEN a.remoteCreatedAt IS NOT NULL THEN a.remoteCreatedAt
ELSE a.publishedAt
END DESC
这未经测试,您的查询可能存在其他问题,但希望这可以排除导致错误/意外结果的一个可能原因。
关于java - Order by 子句在 hibernate 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722625/