2016-12-12 7 views
0

私はむしろHQLに新しく、カラムの1つに特定の値がある場合にフィルタを適用するために、WHERE句をhqlクエリに追加しようとしています。私はCASE WHENステートメントについて読んだことがありますが、それを使用しようとしていますが、明らかに私は間違っています。なぜなら、クエリで構文エラーが発生するからです。私が試した何HQL - カラムに基づく条件付きWHERE句

は以下の通りです:理想的

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

、私は何をしたいcol1が特定の値を持っている場合にのみ、それ以外の場合は、私はすべてのフィルタを適用したくないフィルタdtIns >= :dt1を適用しています。 サーバがで応答:

QuerySyntaxException: unexpected token: >= 

誰もが私が間違ってやっているものを私に伝えることができますか?

答えて

1

それはあなたの場合には、このようなクエリを記述すると良いでしょう:

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

それはあなたの問題を解決されていますか?

+0

はい、これは私の質問に投稿した特定のケースで動作します。しかし、私がCASE声明で間違っていたことを教えていただけますか?それはWHERE節でまったく使用できますか、もっと複雑なケースを構築したい場合は、ANDやORのようなブール演算子に完全に依存する必要がありますか? –

+0

where節で 'CASE WHEN'を使うことはできません。 – dmitrievanthony

+0

ありがとうございます。 –

関連する問題