10.4.14. IN 述語
IN
述語は、値のリストに特定の値があることを確認するチェックを行います。構文は次の通りです。
single_valued_expression
のタイプと single_valued_list
の各値は一致しなければなりません。JPQL は有効なタイプを文字列、数字、日付、時間、タイムスタンプ、列挙型に限定します。JPQL では、 single_valued_expression
は下記のみを参照できます。
- 簡単な属性を表す「ステートフィールド」。アソシエーションとコンポーネント/埋め込み属性を明確に除外します。
- エンティティータイプの式。
HQL では、
single_valued_expression
はさらに広範囲の式タイプを参照することが可能です。単一値のアソシエーションは許可されます。コンポーネント/埋め込み属性も許可されますが、この機能は、基礎となるデータベースのタプルまたは「行値コンストラクター構文」へのサポートのレベルに依存します。また、HQL は値タイプを制限しませんが、基礎となるデータベースのべンダーによってはサポートが制限されるタイプがあることをアプリケーション開発者は認識しておいたほうがよいでしょう。これが JPQL の制限の主な原因となります。
値のリストは複数の異なるソースより取得することが可能です。
constructor_expression
と collection_valued_input_parameter
では、空の値のリストは許可されず、最低でも 1 つの値が含まれなければなりません。
例10.16 IN 述語の例