web-dev-qa-db-ja.com

(...)クエリでHQLを記述する適切な方法

次のHQLクエリを作成すると仮定します。

FROM Cat c WHERE c.id IN (1,2,3)

これをパラメータ化されたクエリとして記述する適切な方法は何ですか?.

FROM Cat c WHERE c.id IN (?)
74
Robert Munteanu

位置パラメータを使用してこれを行う方法はわかりませんが、位置パラメータの代わりに名前付きパラメータを使用できる場合は、名前付きパラメータを角かっこ内に配置できます setParameterList method from Query interface値のリストをこのパラメーターにバインドするために使用できます。

...
Query query = session.createQuery("FROM Cat c WHERE c.id IN (:ids)");
query.setParameterList("ids", listOfIds);
...
127
Matej

Hibernateの古いバージョンでは、setParameterListQueryメソッドがない場合があります。同じ効果を得るために、古いものでsetParameter("ids", listOfIds);を呼び出すことができます。

10
Travis