我做这个JPQL查询

SELECT e
  FROM Expediente e
 WHERE e.fechaBaja is null
 ORDER BY e.idSituacion ASC,
          e.idExpediente ASC


但是当e.idSituacion为null时,eclipseLink不会返回此注册表。

我如何使用oracle函数nvl进行此查询? EclipseLink 2.1.3是否支持此功能?

SELECT  nvl(e.idSituacion,' ')
  FROM Expediente e
 WHERE e.fechaBaja is null
 ORDER BY e.idSituacion ASC,
          e.idExpediente ASC


要么

SELECT e
  FROM Expediente e
 WHERE e.fechaBaja is null
   and nvl(e.idSituacion,' ')
 ORDER BY e.idSituacion ASC,
       e.idExpediente ASC


谢谢。

最佳答案

合并

我不确定它如何为您提供帮助,但是您可以使用COALESCE函数:http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#Functions

(这类似于NVL,但是NVL是Oracle特定的,COALESCE是ANSI标准。)

订购

使用ORDER BY e.idSituacion ASC时,空值将位于结果的末尾。

如果要首先具有空值,则可以使用NULLS FIRST子句:

ORDER BY e.idSituacion ASC NULLS FIRST

(仅来自Eclipselink 2.4)

10-04 13:27