Java ORDERBY子句在hibernate中不起作用

Java ORDERBY子句在hibernate中不起作用,java,hibernate,hql,Java,Hibernate,Hql,我的hql查询如下所示,但它不是按.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.pu

我的hql查询如下所示,但它不是按.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

当语句时,我注意到您的
逐案排序的一个问题是,您试图将null与
进行比较=操作员。相反,您应该使用
IS NOT NULL

ORDER BY CASE
             WHEN a.remoteCreatedAt IS NOT NULL THEN a.remoteCreatedAt
             ELSE a.publishedAt
         END DESC

这是未经测试的,您的查询可能存在其他问题,但希望这排除了错误/意外结果的一个可能原因。

我注意到,当您的
语句试图将null与
进行比较时,您的
顺序出现了一个问题=操作员。相反,您应该使用
IS NOT NULL

ORDER BY CASE
             WHEN a.remoteCreatedAt IS NOT NULL THEN a.remoteCreatedAt
             ELSE a.publishedAt
         END DESC

这是未经测试的,您的查询可能存在其他问题,但希望这排除了错误/意外结果的一个可能原因。

查询中没有问题。实际上,这个查询没有得到执行。对不起,麻烦了。谢谢蒂姆抽出时间。我还学到了很多其他的东西。

查询中没有问题。实际上,这个查询没有得到执行。对不起,麻烦了。谢谢蒂姆抽出时间。我还学到了很多其他的东西。

嗨,蒂姆,我试过这个,但没用。!=运算符似乎是有效的(内部hibernate转换为“is not null”),因为我已经检查了此hql的sql查询。如果你愿意,我可以给你这个由hibernate生成的hql的sql等价物。嗨,Tim,我已经试过了,但是这个没有帮助。!=运算符似乎是有效的(内部hibernate转换为“is not null”),因为我已经检查了此hql的sql查询。如果您愿意,我可以为您提供与hibernate生成的hql相同的sql。您应该删除此问题,因为查询没有问题,正如您在下面的回答中所指出的。如果你不回答这个问题,其他读者会感到困惑。我如何删除这个问题?我想我无法做到这一点,因为有一个答案的票数超过一次。你应该删除这个问题,因为这个问题没有问题,正如你在下面的答案中所指出的那样。如果你不回答这个问题,其他读者会感到困惑。我如何删除这个问题?我想我不能这么做,因为有一个答案被多次投票支持