Java HQL使用两列中最大的一列对记录进行排序

Java HQL使用两列中最大的一列对记录进行排序,java,hibernate,hql,Java,Hibernate,Hql,对于数据库中的每一行,我有两列,比如id和A。有时A可以是null。我想按其id和A值中的最大值对所有记录进行排序,但如果A为null,则将忽略它,并改为按id对列进行排序 我使用Hibernate和数据库作为MySQL。到目前为止,我的HQL是 select i from Item as i order by GREATEST(id, a) 除了A=null的记录外,它工作正常。对于这些值,它们出现在返回结果的末尾(应该使用它们的id作为键对它们进行排序) 如何编写这样的HQL语句?有人用C

对于数据库中的每一行,我有两列,比如
id
A
。有时
A
可以是
null
。我想按其
id
A
值中的最大值对所有记录进行排序,但如果
A
null
,则将忽略它,并改为按
id
对列进行排序

我使用Hibernate和数据库作为MySQL。到目前为止,我的HQL是

select i from Item as i order by GREATEST(id, a)
除了
A=null
的记录外,它工作正常。对于这些值,它们出现在返回结果的末尾(应该使用它们的
id
作为键对它们进行排序)


如何编写这样的HQL语句?

有人用
Case解决了它。..When..End
,效果非常好

select i from Item as i order by CASE WHEN a = null THEN id ELSE GREATEST(id, a) END DESC