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中文網其他相關文章!