2

このJPQLクエリを実行します

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

ただし、e.idSituacionnull の場合、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いますがNVL、Oracle 固有でCOALESCEあり、ANSI 標準です。)

注文

ORDER BY e.idSituacion ASCnull 値を使用すると、結果の最後になります。

最初に null 値を取得したい場合は、次のNULLS FIRST句を使用できます。

ORDER BY e.idSituacion ASC NULLS FIRST

(Eclipselink 2.4 からのみ)

于 2012-12-03T12:59:33.503 に答える
-1

これは eclipseLink Bug 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 に答える