JPQL IN 子句:展開數組、列表和其他集合
在Java 持久性查詢語言(JPQL) 中,IN 子句允許您指定用於比較的特定值的清單。但是,如果您需要比較一組值而不是單獨列出它們,您可能想知道是否有辦法在 JPQL 中執行此操作。
答案:
是的,在 JPA 2.0 及更高版本中,您可以在 IN 子句中指定要展開為其各個值的集合。為此:
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);
範例:
EclipseLink 中的以下範例檢索名稱與「foo」或「 bar」所符合的所有Item 物件:
String qlString = "select item from Item item where item.name IN :names"; Query q = em.createQuery(qlString, Item.class); Listnames = Arrays.asList("foo", "bar"); q.setParameter("names", names); List - actual = q.getResultList(); assertNotNull(actual); assertEquals(2, actual.size());
注意事項Hibernate:
在Hibernate 4 之前,您需要在JPQL 查詢中將參數在括號中:
String qlString = "select item from Item item where item.name IN (:names)";
以上是JPQL的IN子句可以直接處理集合嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!