JPQL IN 子句:使用陣列或集合動態擴充
查詢資料庫時,通常需要擷取與特定集合相符的物件的價值觀。在 SQL 中,這通常是使用 IN 子句來實現的。然而,在 JPQL 中,標準方法要求明確指定 IN 子句中的每個值。
JPQL 的IN 子句限制
預設的JPQL IN 子句需要一個單獨的列表參數,如:
SELECT item FROM Item item WHERE item.name IN (:name1, :name2, :name3)
這種>方法在處理時會變得繁瑣且容易出錯具有大量值。
解:利用集合
為了解決此限制,JPQL 2.0 引入了將集合作為參數傳遞給 IN 子句的功能。這允許您動態擴充子句中的值集。
在JPQL IN 子句中使用陣列和列表
在Java 中,您可以使用陣列或list 來表示值的集合:
List<String> names = Arrays.asList("foo", "bar"); String jpql = "SELECT item FROM Item item WHERE item.name IN :names"; Query q = em.createQuery(jpql); q.setParameter("names", names);
透過將集合作為名為「names」的參數傳遞, JPQL 會自動將其值解包到IN 子句中。
相容性考慮
請注意,此功能在JPA 2.0 中受支持,並且需要在不同的ORM 提供程序中進行特定實現:
String jpql = "SELECT item FROM Item item WHERE item.name IN (:names)";
以上是如何有效地將 JPQL 的 IN 子句與動態擴展數組或集合結合使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!