java - Order by 子句在 hibernate 中不起作用

标签 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

最佳答案

我注意到您的 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/

相关文章:

java - 正确使用Camel Aggregator "to"URI

java - 以货币格式更改 Edittext 的输入

java - 来自属性文件的 Spring Hibernate 自定义 validator 默认消息

java - 处理 hibernate 实体上的数据库 View 的优雅方法?

grails - Grails-CreateCriteria检索包含查询中任何元素的任何条目

java - 匹配标签之间的字符串:

java - apache xmlrpc 3.1.3 与 Java 11 兼容吗?

java - Hibernate 中的一对一共享主键映射可以是可选/空吗?

java - 如何编写 hql 查询以从逗号分隔的单词中搜索一个单词

java - JPA/Hibernate 从两个不同列的两个实体中进行选择