时间:2017-01-25 11:31:51

标签: java jpql

我正在为Java EE项目开发一个延迟加载模型。当我尝试对具有空值的数据进行排序时,我遇到了问题。例如,

  

SELECT u FROM Users u ORDER BY u.Countries。 label ASC

此查询显示按国家/地区排序的所有数据,但省略了具有国家/地区的用户。问题在这里:

  1. 我也需要向他们展示。
  2. 我正在实施通用模型=我不想强制执行查询。
  3.   

    从用户u中选择u.Countries ASC

    这也不起作用,因为我必须指定一个有效的ORDER BY项目,例如标签

2 个答案:

答案 0 :(得分:1)

您需要使用外部联接

SELECT t1 FROM Table1 t1 left join t1.column1 c1 ORDER BY c1.id ASC
OR    
SELECT * FROM Users ORDER BY Countries DESC NULLS LAST;

如果您使用的是标准API,则可以使用以下

USer user = criteriaBuilder.asc(myExpression).nullsFirst();

答案 1 :(得分:0)

您使用的查询无论如何都会将国家/地区的值列为空,最后它不会省略具有空值的记录。