Eclipse NVL函数与EclipseLink(版本2.1.3)中的JQPL等效?

时间:2012-12-03 07:19:35

标签: java oracle function eclipselink

我做这个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

谢谢。

2 个答案:

答案 0 :(得分:9)

<强> COALESCE

我并不完全了解它对您有何帮助,但您可以使用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)

答案 1 :(得分:0)