@Query("SELECT c FROM message c"
+" WHERE (CASE WHEN a='' THEN 1=1 ELSE a= :a"
+ " WHEN b='' THEN 1=1 ELSE b= :b"
+ " WHEN c='' THEN 1=1 ELSE c= :c"
+ " WHEN d='' THEN 1=1 ELSE d= :d)")
パラメータ。私は値の<em>オプション</em>入力a、b、c、dを持ってHQLクエリを記述しようとしています
私の目標は、入力が '='の場合にクエリを認識させ、1 = 1と一緒に移動するだけで何もしないことです。
私はエラーを取得 antlr.NoViableAltExceptionを保つ:予期しないトークンを:=
最初のエラー・トークンは "CASE" だったと、今では "=" です。
"1 = 1アプローチ"は実行可能ですか? HQLでCASE文をこのように使用できますか?あなたは、この操作を行うにはJPQLを使用することを確認してください
@Query("SELECT c "
+ "FROM message c"
+ " WHERE"
+ " CASE (WHEN a != '' THEN a = :a"
+ " WHEN b != '' THEN b = :b"
+ " WHEN c != '' THEN c = :c"
+ " WHEN d != '' THEN d = :d)"
antlr.NoViableAltException: unexpected token: WHEN
antlr.NoViableAltException: unexpected token: a
antlr.NoViableAltException: unexpected token: THEN
はい、あなたはちょうど 'WHEN b!= '' THEN b =:b' –
を使用してください。 antlr.NoViableAltException:予期しないトークンを取得している理由: –