我的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
答案 0 :(得分:4)
我注意到您的ORDER BY CASE WHEN
语句的一个问题是您正在尝试将空值与!=
运算符进行比较。相反,您应该使用IS NOT NULL
:
ORDER BY CASE
WHEN a.remoteCreatedAt IS NOT NULL THEN a.remoteCreatedAt
ELSE a.publishedAt
END DESC
这是未经测试的,您的查询可能存在其他问题,但希望这可以排除错误/意外结果的一个可能原因。
答案 1 :(得分:0)
查询中没有问题。实际上这个查询没有被执行。抱歉有问题。谢谢蒂姆的时间。我也学到了很多其他的东西。