ホームページ >データベース >mysql チュートリアル >動的に拡張される配列またはコレクションで JPQL の IN 句を効率的に使用するにはどうすればよいですか?
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<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 中国語 Web サイトの他の関連記事を参照してください。