回答:
JPA 1.0についてはわかりませんがCollection
、JPA 2.0でを渡すことができます。
String qlString = "select item from Item item where item.name IN :names";
Query q = em.createQuery(qlString, Item.class);
List<String> names = Arrays.asList("foo", "bar");
q.setParameter("names", names);
List<Item> actual = q.getResultList();
assertNotNull(actual);
assertEquals(2, actual.size());
EclipseLInkでテスト済み。Hibernate 3.5.1では、パラメーターを括弧で囲む必要があります。
String qlString = "select item from Item item where item.name IN (:names)";
しかし、これはバグであり、前のサンプルのJPQLクエリは有効なJPQLです。HHH-5126を参照してください。
oracleの制限は1000パラメータです。この問題は、バージョン4.1.7でhibernateによって解決されましたが、渡されたパラメーターリストを500のセットに分割することにより、 JIRA HHH-1123を参照してください。