として、私は私のリポジトリの1つに次の関数を抱えている:春データ(REST)&@query:オプションのリストは、PARAM
@RestResource(path = "filter", rel = "filter")
@Query("SELECT t "
+ "FROM Trip t "
+ "WHERE "
+ "(:from IS NULL OR t.startTs >= :from) "
+ "AND (:categories IS NULL OR t.category IN :categories) ")
Page<Trip> filter(
@Param("from") Instant from,
@Param("categories") List<Category> categories,
Pageable pageable);
Category
は
@Enumerated(EnumType.STRING)
として格納されている列挙型であります
Trips
テーブルの
。
私が正確に1つのカテゴリで自分のhttpリクエストを行っているとき、私は正しい結果を得ています。カテゴリキーなしでリクエストを行う場合と同じ動作です。複数のカテゴリ使用している場合
htt*://localhost/filter?categories=PRIVATE
==> OK
htt*://localhost/filter
==> OK
:
htt*://localhost/filter?categories=PRIVATE,BUSINESS
を私は次の例外を取得しています:
org.hibernate.hql.internal.ast.QuerySyntaxException:予期しないAST ノード:{ベクトル} [select count(t)FROM foo.bar.services.trips.model.Trip t:どこから::IS NULLまたはt.startTs> =:)AND(:categories_0_、 :categories_1_ IS NULLまたはt.category IN(:categories_0_、 :categories_1_))]
ここで間違っているのは誰ですか?
両方を試しましたが、動作しませんでした。しかし、あなたは正しい方向に私を指摘しました。これは最終的に動作しています:AND((:categories)IS NULL OR(t.category IN(:categories))。Thx! – StephanM
素晴らしい! –