次のHQLクエリを作成すると仮定します。
FROM Cat c WHERE c.id IN (1,2,3)
これをパラメータ化されたクエリとして記述する適切な方法は何ですか?.
FROM Cat c WHERE c.id IN (?)
位置パラメータを使用してこれを行う方法はわかりませんが、位置パラメータの代わりに名前付きパラメータを使用できる場合は、名前付きパラメータを角かっこ内に配置できます setParameterList method from Query interface値のリストをこのパラメーターにバインドするために使用できます。
...
Query query = session.createQuery("FROM Cat c WHERE c.id IN (:ids)");
query.setParameterList("ids", listOfIds);
...
Hibernateの古いバージョンでは、setParameterList
にQuery
メソッドがない場合があります。同じ効果を得るために、古いものでsetParameter("ids", listOfIds);
を呼び出すことができます。