次のような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
文字列を作成し、それからクエリ全体を作成できることはわかっていますが、オーバーヘッドを避けたかったのです。これを行うより良い方法はありますか?
関連質問:リストが非常に大きい場合、そのようなクエリを作成する良い方法はありますか?
これはstackoverflow.com/questions/1557085/…の複製ですが、このスレッドは有用な回答を提供します。
—
マイクライアン