order by子句不在hibernate

时间:2016-04-19 15:18:11

标签: java hibernate hql

我的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

2 个答案:

答案 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)

查询中没有问题。实际上这个查询没有被执行。抱歉有问题。谢谢蒂姆的时间。我也学到了很多其他的东西。