Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

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'