2016-06-08 5 views
0

Ich habe Folgendes versucht, aber nicht funktioniert.Fallanweisung in wählen Sie in Jpql

String mainQuerySt = "select o.progressStatus, " 
+ " CASE WHEN o.assigneeEmployee IS NOT NULL THEN o.assigneeEmployee.fullNameSt ELSE '' END as assignee " 
+ " from Tt o" 

em.createQuery(mainQuerySt).getResultList(); 

Was ist daran falsch? Eigentlich möchte ich den vollen Namen des assigneeEmployee anzeigen, wenn es nicht null und sonst eine leere Zeichenfolge ist.

Ich bin mit Eclipse v2.1 als JPA

Dank in advnace.

EclipseLink Tutorial

+0

Erklären Sie "nicht funktioniert". Erhalten Sie einen Fehler? – tak3shi

+0

Zeige den Fehler bitte, die Abfrage scheint mir in Ordnung – SCouto

+0

Kein Fehler, aber nicht das Ergebnis. Aber wenn ich die case-Anweisung weglasse, gibt es das Ergebnis zurück. Scheint mir seltsam. – sarwar026

Antwort

1

Sie o.assigneeEmployee verwenden IS NOT NULL, und ich nehme an o.assigneeEmployee eine Beziehung ist. Die Verwendung der Punktnotation erzwingt einen inneren Join, der Nullen ausfiltert. Versuchen

String mainQuerySt = "select o.progressStatus, " 
+ " CASE WHEN assigneeEmployee IS NOT NULL THEN assigneeEmployee.fullNameSt ELSE '' END as assignee " 
+ " from Tt o left outer join o.assigneeEmployee assigneeEmployee" 

Wenn es nicht die erwarteten Ergebnisse nicht zurückgibt, dann müssen Sie auf die SQL-Protokollierung, um den SQL erzeugt, um zu sehen und zeigen die Ergebnisse, die Sie erwarten.