2

我做这个 JPQL 查询

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

但是当e.idSituacion为空时,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

谢谢你。

4

2 回答 2

9

合并

我不完全了解它将如何帮助您,但您可以使用COALESCE功能:http ://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#Functions

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

命令

使用ORDER BY e.idSituacion ASC空值将在结果的末尾。

如果你想先有你的空值,你可以使用NULLS FIRST子句:

ORDER BY e.idSituacion ASC NULLS FIRST

(仅来自 Eclipselink 2.4)

于 2012-12-03T12:59:33.503 回答
-1

这是一个 eclipseLink 错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=294092

我需要原生 sql,例如http://tomaszdziurko.pl/2011/12/problem-withjpa-join-column-null-values-and-orderby/

于 2012-12-03T15:58:36.977 回答