我想加载所有将文本标记设置为数据库中任意少量但任意数量的值的对象。在 SQL 中解决此问题的逻辑方法是构建一个“IN”子句。 JPQL 允许 IN,但它似乎要求我直接指定 IN 的每个参数(如“in (:in1, :in2, :in3)”)。
是否有某种方法可以指定应展开为 IN 子句的值的数组或列表(或其他容器)?
我不确定 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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)