Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按日期升序排序,最后为空_Java_Sql_Hibernate_Hql - Fatal编程技术网

Java 按日期升序排序,最后为空

Java 按日期升序排序,最后为空,java,sql,hibernate,hql,Java,Sql,Hibernate,Hql,我使用java和hibernate 3.2.5.ga 我有一张有日期栏的桌子。我想创建一个hql查询,它将按日期升序对结果进行排序,但将空值放在最后 通常情况下,“按日期排序”asc首先返回NULL,而“NULL LAST”关键字不起作用 如何实现这一点?我有一个解决方案,可能不是正确的方法,但您可以考虑在数据库中增加一个列“temp”,并定义一个触发器,该触发器将在每次更新日期列时更新temp值,如果日期为空,将温度值设置为100,如果未设置,则将温度值设置为0 现在,在您的查询中,按temp

我使用java和hibernate 3.2.5.ga

我有一张有日期栏的桌子。我想创建一个hql查询,它将按日期升序对结果进行排序,但将空值放在最后

通常情况下,“按日期排序”asc首先返回NULL,而“NULL LAST”关键字不起作用


如何实现这一点?

我有一个解决方案,可能不是正确的方法,但您可以考虑在数据库中增加一个列“temp”,并定义一个触发器,该触发器将在每次更新日期列时更新temp值,如果日期为空,将温度值设置为100,如果未设置,则将温度值设置为0

现在,在您的查询中,按temp asc、date asc进行排序,所有非空日期将首先出现,然后是空日期

PS:我自己还没有试过,所以试一下吧

使用如下查询:

SELECT YourDateColumn
FROM YourTable
WHERE YourCondition
ORDER BY
  CASE WHEN YourDateColumn IS NULL THEN 1 ELSE 0 END,
  YourDateColumn

它可以工作,但是仅仅为了让我完全同意而更改模式是非常不公平的,或者如果日期为空,您可以尝试将其设置为某个默认值,然后尝试进行排序。SQL解决方案足够吗?如果是这样,DBMS是什么?