2016-12-12 123 views
0

我對HQL比較陌生,我試圖給我的hql查詢添加一個WHERE子句,以便僅在其中一列具有特定值時應用過濾器。我已閱讀CASE WHEN聲明,並試圖使用它,但顯然我做錯了,因爲我在查詢中出現語法錯誤。HQL-基於列的條件WHERE子句

我已經試過如下:

FROM myClass WHERE CASE WHEN col1 = :val1 THEN dtIns >= :dt1 ELSE true END 

理想情況下,我想要做的是應用過濾器dtIns >= :dt1只有當col1具有一定的價值,否則我不想施加任何過濾器。 服務器迴應:

QuerySyntaxException: unexpected token: >= 

誰能告訴我我做錯了什麼嗎?

回答

1

最好是這樣寫查詢你的情況:

FROM myClass WHERE col1 != :val1 OR dtIns >= :dt1 

是它解決問題了嗎?

+0

是的,這適用於我在我的問題中發佈的特定情況。但是你能告訴我我在CASE聲明中做錯了什麼嗎?如果我想構建一個更復雜的案例,它可以在WHERE子句中使用嗎?還是需要完全依賴像AND和OR這樣的布爾運算符? –

+0

據我所知,你不能在where子句中使用CASE WHEN。 – dmitrievanthony

+0

謝謝,接受。 –