Answers:
我不确定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版中解决了该问题,但通过将传递的参数列表分成500组, 请参见JIRA HHH-1123