JPQL IN 句: 配列、リスト、その他のコレクションの展開
Java Persistence Query Language (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)";
ただし、これは Hibernate 固有の拡張機能であり、標準 JPQL 構文の一部。
以上がJPQL の IN 句はコレクションを直接処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。