让我们假设一个简单的JPA查询,如:
from MyObject where foo = ? order by bar desc
让我们假设bar是一个基本属性,如字符串或整数。最后,bar可以为空。带有bar == null的MyObjects出现在列表中 - 顶部还是底部?这是提供者和/或数据库特定的吗?
答案 0 :(得分:3)
特定于数据库。一些JPA供应商(例如DataNucleus JPA)提供了指定
的扩展NULLS FIRST | LAST
每个订单条款
答案 1 :(得分:2)
我刚刚在EJB规范中找到了答案:
适用于空值排序的SQL规则:也就是说,所有空值必须出现在所有非空值之前 排序中的值或所有空值必须出现在排序中的所有非空值之后,但事实并非如此 特定的。
所以基本上你必须在这种情况下手动进行排序,因为你无法确定数据库将返回空值的位置。
答案 2 :(得分:1)
这是特定于数据库的,据我所知,它不属于JPA规范。
示例:想象一下,您从DB中获取10个10毫升排序值中的10个,然后想要在您的代码中决定以另一种方式对它们进行排序:不是一个简单的任务=>这是数据库的任务。
答案 3 :(得分:0)
这取决于SQL实现,但我的经验是NULL排序,好像它是空字符串。换言之,在其他一切之前。