JPAクエリにIN句リストを追加する質問する

JPAクエリにIN句リストを追加する質問する

次のような NamedQuery を構築しました。

@NamedQuery(name = "EventLog.viewDatesInclude",
        query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
        + "el.timeMark <= :dateTo AND "
        + "el.name IN (:inclList)")

私がやりたいのは、パラメータ :inclList に 1 つの項目ではなく項目のリストを入力することです。たとえば、new List<String>() { "a", "b", "c" }:inclList パラメータでそれを取得するにはどうすればよいですか? コード化できるのは 1 つの文字列だけです。たとえば、次のようになります。

setParameter("inclList", "a") // works

setParameter("inclList", "a, b") // does not work

setParameter("inclList", "'a', 'b'") // does not work

setParameter("inclList", list) // throws an exception

文字列を作成して、そこからクエリ全体を構築できることはわかっていますが、オーバーヘッドを避けたいと思いました。これを行うより良い方法はありますか?

関連する質問: リストが非常に大きい場合、そのようなクエリを構築する良い方法はありますか?

ベストアンサー1

INコレクション値のパラメータを使用する場合、以下は必要ありません(...)

@NamedQuery(name = "EventLog.viewDatesInclude", 
    query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND " 
    + "el.timeMark <= :dateTo AND " 
    + "el.name IN :inclList") 

おすすめ記事