JPQL 提供 IN 子句来根据一组特定值过滤实体。然而,对于涉及任意数量值的场景,显式指定每个参数可能会变得乏味且低效。本文探讨了使用数组、列表或集合等容器扩展 IN 子句的值的可能性。
为了直接回答这个问题,JPQL 2.0 引入了对将集合作为参数传递给 IN 子句的支持。这样就无需手动指定每个值并简化了代码结构。
以下 Java 代码使用 List 演示了此功能:
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 需要将参数括在括号中(一个已知的错误)。
以上是如何高效地使用 JPQL 的 IN 子句与多个值?的详细内容。更多信息请关注PHP中文网其他相关文章!