JPQL は、特定の値のセットに基づいてエンティティをフィルタリングするための IN 句を提供します。ただし、任意の数の値が含まれるシナリオの場合、各パラメーターを明示的に指定するのは面倒で非効率になる可能性があります。この記事では、配列、リスト、セットなどのコンテナを使用して IN 句の値を拡張する可能性について検討します。
質問に直接答えるために、JPQL 2.0 ではコレクションをパラメータとして IN 句に渡すサポートが導入されました。これにより、各値を手動で指定する必要がなくなり、コード構造が簡素化されます。
次の Java コードは、リストを使用してこの機能を示しています。
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 中国語 Web サイトの他の関連記事を参照してください。