値を比較するCriteriaBuilderのメソッド

8.4 値を比較するCriteriaBuilderのメソッド

Criteria APIをうまく活用するには、CriteriaQueryでエンティティの操作を行うためのメソッド類をいかにしてマスターするか、が重要なことがわかります。これらは1つのクラスでなく、いくつものクラスの機能を組み合わせるため、余計に難しそうに思えてしまいます。まずは必要なものを整理していきましょう。

8.4.1 equal

   《CriteriaBuilder》.equal(《Path》,《Object》)

第1引数のPathで指定されたエンティティのプロパティが第2引数と等しいかどうかをチェックします。

8.4.2 notEqual

   《CriteriaBuilder》.notEqual(《Path》,《Object》)

Equalと反対の働きをします。2つの引数の示すものが等しくないことを調べます。

8.4.3 gt, greaterThan

   《CriteriaBuilder》.gt(《Path》,《Object》)
   《CriteriaBuilder》.greaterThan(《Path》,《Object》)

第1引数で指定した要素が、第2引数の値より大きいことをチェックします。基本的には、数値関係のプロパティで使います。2つありますが、どちらも働きは同じです。

8.4.4 ge, greaterThanOrEqualTo

   《CriteriaBuilder》.ge(《Path》,《Object》)
   《CriteriaBuilder》.greaterThanOrEqualTo(《Path》,《Object》)

第1引数で指定した要素が、第2引数の値と等しいか大きいことをチェックします。equalとgreaterThanを組み合わせたものと考えるとよいでしょう。やはり2つメソッドがありますが、働きはどちらも同じです。

8.4.5 lt, lessThan

   《CriteriaBuilder》.lt(《Path》,《Object》)
   《CriteriaBuilder》.lessThan(《Path》,《Object》)

第1引数で指定した要素が、第2引数の値より小さいことをチェックします。メソッドは2つあり、どちらも働きは同じです。

8.4.6 le, lessThanOrEqualTo

   《CriteriaBuilder》.le(《Path》,《Object》)
   《CriteriaBuilder》.lessThanOrEqualTo(《Path》,《Object》)

第1引数で指定した要素が、第2引数の値と等しいか小さいことをチェックします。equalとlessThanを組み合わせたものです。2つのメソッドは、どちらも同じです。

8.4.7 between

   《CriteriaBuilder》.between(《Path》,《Object1》,《Object2》)

珍しく3つの引数を持ったメソッドです。第1引数で指定した要素が、第2引数と第3引数の間に含まれていることをチェックします。

8.4.8 isNull

   《CriteriaBuilder》.isNull(《Path》)

引数で指定した要素がnullであることをチェックします。

8.4.9 isNotNull

   《CriteriaBuilder》.isNotNull(《Path》)

引数で指定した要素がnullでないことをチェックします。

8.4.10 isEmpty

   《CriteriaBuilder》.isEmpty(《Path》)

引数で指定した要素が空っぽ(空文字を含む)であることをチェックします。

8.4.11 isNotEmpty

   《CriteriaBuilder》.isNotEmpty(《Path》,《String》)

8.3で使われたメソッドですね。第1引数に指定した要素の値が、第2引数の文字列を含んでいるかどうかをチェックします。SQLのLIKE演算子と同じく、値の前後に「%」を付けると、あいまい検索として文字列を比較できます。

8.4.12 like

   《CriteriaBuilder》.like(《Path》,《String》)

8.3で使われたメソッドですね。第1引数に指定した要素の値が、第2引数の文字列を含んでいるかどうかをチェックします。SQLのLIKE演算子と同じく、値の前後に「%」を付けると、あいまい検索として文字列を比較できます。

8.4.13 and

   《CriteriaBuilder》.and(《Predicate1》,《Predicate2》, ……)

2つ以上の式を示すオブジェクトがいずれも成立することをチェックします。引数には、ここに挙げたメソッドを使って作成された式が用意されます。

8.4.14 or

   《CriteriaBuilder》.or(《Predicate1》,《Predicate2》, ……)

2つ以上の式を示すオブジェクトがいずれかが成立することをチェックします。and同様、ここに挙げたメソッドを使って作成された式を指定します。

8.4.15 not

   《CriteriaBuilder》.not(《Predicate》)

引数に指定された式が成立しないことをチェックします。

この他にも多数のメソッドがCriteriaBuilderには用意されていますが、とりあえずここに挙げたものが一通りわかれば、基本的な式は作成できるようになるでしょう。これらのメソッドで作られた式をwhereの引数に指定することで、基本的な検索のためのCriteriaQueryはだいたい作れるようになるはずです。


NEXT>> 8.5 orderByによるエンティティのソート