JPA:如何对空值进行排序?

时间:2014-03-05 15:49:45

标签: java jpa

让我们假设一个简单的JPA查询,如:

from MyObject where foo = ? order by bar desc

让我们假设bar是一个基本属性,如字符串或整数。最后,bar可以为空。带有bar == null的MyObjects出现在列表中 - 顶部还是底部?这是提供者和/或数据库特定的吗?

4 个答案:

答案 0 :(得分:3)

特定于数据库。一些JPA供应商(例如DataNucleus JPA)提供了指定

的扩展
NULLS FIRST | LAST

每个订单条款

答案 1 :(得分:2)

我刚刚在EJB规范中找到了答案:

  

适用于空值排序的SQL规则:也就是说,所有空值必须出现在所有非空值之前   排序中的值或所有空值必须出现在排序中的所有非空值之后,但事实并非如此   特定的。

所以基本上你必须在这种情况下手动进行排序,因为你无法确定数据库将返回空值的位置。

答案 2 :(得分:1)

这是特定于数据库的,据我所知,它不属于JPA规范。

示例:想象一下,您从DB中获取10个10毫升排序值中的10个,然后想要在您的代码中决定以另一种方式对它们进行排序:不是一个简单的任务=>这是数据库的任务。

答案 3 :(得分:0)

这取决于SQL实现,但我的经验是NULL排序,好像它是空字符串。换言之,在其他一切之前。