Query は、名前付きのパラメータや JDBC スタイルの ? パラメータに値をバインドするためのメソッドを持っています。 JDBC とは違い、 Hibernate はパラメータにゼロから番号を振っていきます。名前付きのパラメータとは、クエリ文字列のなかにある :name 形式の識別子です。名前付きパラメータの利点は次の通りです。
名前付きパラメータは、クエリ文字列に登場する順番と無関係です
同じクエリ内に複数回登場することができます
自分自身を説明します
//named parameter (preferred)
Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
q.setString("name", "Fritz");
Iterator cats = q.iterate();
//positional parameter
Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
q.setString(0, "Izi");
Iterator cats = q.iterate();
//named parameter list
List names = new ArrayList();
names.add("Izi");
names.add("Fritz");
Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");
q.setParameterList("namesList", names);
List cats = q.list();