では、
FilterCriterionとして利用できるインスタンスを返すメソッドにはどのようなものがあるのでしょうか。以下に整理しておきましょう。
equal――引数に渡した値と等しいことを設定するものです。
notEqual――引数の値と等しくないことを設定します。
greaterThan,
greaterthanOrEqual――引数よりも大きい、あるいは等しいか大きいことを設定します。
lessThan,
lessThanOrEqual――引数よりも小さい、あるいは等しいか小さいことを設定します。
isNotNull――nullではないことを設定します。
contains――テキストで引数の値を含んでいることを設定します。
startsWith,
endsWith――テキストで引数で指定した値で始まる、あるいは終わることを設定します。
in――引数に複数個の値やコレクションを用意し、その中に値が含まれていることを設定します。
これらを
filterメソッドの引数内で利用することで、特定の条件にあったエンティティだけに絞り込むことができます。
■複数のfilterを利用する
この
filterメソッドは
ModelQueryインスタンスを返します。そう、
filter自身が
ModelQueryクラスのインスタンスメソッドですから、メソッドチェーンを利用することでいくつもの
filterを連結することもできるのです。
List<MyData> list = Datastore.query(MyDataMeta.get())
.filter(MyDataMeta.get().myname.equal(s))
.filter(MyDataMeta.get().mail.isNotNull()).asList();
例えば、検索部分をこの様にすれば、
mynameが入力テキストと同じで、なおかつ
mailがnullでないものが検索されます。