13.4.13. HQL 述語について
述語は、where 句、having 句、検索 CASE 式の基礎を形成します。これらは式であり、通常は
TRUE
または FALSE
に解決されます。ただし、NULL が関係するブール値比較は一般的に UNKNOWN
に解決します。
HQL の述語
- ヌルネス述語
- null の値を確認してください。基本的な属性参照、エンティティーの参照、およびパラメーターに適用できます。さらに HQL を使用すると、コンポーネント/ 組み込み可能なタイプに適用できます。
例13.14 ヌルネスチェックの例
// 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_expression ::= string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
セマンティクスは、式のような SQL のことに従います。paattern_value
は、string_expression
で一致を試みるパターンです。SQL と同様に、pattern_value
では _ と % をワイルドカードとして使用できます。意味は同じです。_ は任意の 1 文字に一致します。% は任意の数の文字に一致します。オプションのescape_character
は、pattern_value
の _ と % の特別な意味をエスケープするために使用されるエスケープ文字を指定するために使用されます。これは、_ または % のいずれかを含むパターンを検索する必要がある場合に便利です。例13.15 述語の例のように
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 つの他の値の範囲内にあるかどうかの評価を実行します。すべてのオペランドは、同等の型を持つ必要があります。例13.16 述語の例の間
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'