2016-06-08 95 views
0

我已經嘗試過以下但不工作。在jpql中選擇case語句

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(); 

這是什麼問題?實際上,如果它不是null,並且是空字符串,我想要顯示AssigneeEmployee全名。

我使用EclipseLink v2.1作爲JPA

感謝advnace。

EclipseLink Tutorial

+0

解釋'不工作'。你有錯誤嗎? – tak3shi

+0

請顯示錯誤,查詢對我來說似乎很好 – SCouto

+0

沒有錯誤,但沒有得到結果。但是如果我省略了case語句,它就是返回結果。對我來說似乎很奇怪。 – sarwar026

回答

1

您正在使用o.assigneeEmployee IS NOT NULL,而我認爲o.assigneeEmployee是有關係的。使用點符號強制一個內部連接,然後將過濾出空值。嘗試

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" 

如果它不返回的結果預期,那麼你就需要打開SQL日誌記錄,看看所產生的SQL,並顯示你所期望的結果。