11.4.13. HQL 述語について
述語は where 節、having 節、および検索 case 式の基盤を形成します。これらは式で、通常は
TRUE
または FALSE
の真理値で解決しますが、NULL が関係するブール値の比較は UNKNOWN
で解決します。
HQL 述語
- NULL 述語
- NULL の値をチェックします。基本的な属性参照、エンティティー参照、およびパラメーターへ適用できます。HQL はコンポーネント/埋め込み可能タイプへの適用も許可します。
例11.14 NULL チェックの例
// select everyone with an associated address select p from Person p where p.address is not null // select everyone without an associated address select p from Person p where p.address is null
- LIKE 述語
- 文字列値で LIKE 比較を実行します。構文は次の通りです。
like_expression ::= string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
セマンティックは SQL の LIKE 式に従います。pattern_value
は、string_expression
で一致を試みるパターンです。SQL と同様に、pattern_value
に「_」や「%」をワイルドカードとして使用できます。意味も同じで、「_」はあらゆる 1 つの文字と一致し、「%」はあらゆる数の文字と一致します。任意のescape_character
は、pattern_value
の「_」や「%」をエスケープするために使用するエスケープ文字を指定するために使用されます。「_」や「%」が含まれるパターンを検索する必要がある場合に役立ちます。例11.15 LIKE 述語の例
select p from Person p where p.name like '%Schmidt' select p from Person p where p.name not like 'Jingleheimmer%' // find any with name starting with "sp_" select sp from StoredProcedureMetadata sp where sp.name like 'sp|_%' escape '|'
- BETWEEN 述語
- SQL の
BETWEEN
式と同様です。値が他の 2 つの値の間にあることを評価するため実行します。演算対象はすべて比較可能な型を持つ必要があります。例11.16 BETWEEN 述語の例
select p from Customer c join c.paymentHistory p where c.id = 123 and index(p) between 0 and 9 select c from Customer c where c.president.dateOfBirth between {d '1945-01-01'} and {d '1965-01-01'} select o from Order o where o.total between 500 and 5000 select p from Person p where p.name between 'A' and 'E'