クエリメソッド

通常、リポジトリに対してトリガーするデータアクセス操作のほとんどは、LDAP ディレクトリに対してクエリを実行することになります。このようなクエリを定義するには、次の例に示すように、リポジトリインターフェースでメソッドを宣言する必要があります。

PersonRepository とクエリメソッド
interface PersonRepository extends PagingAndSortingRepository<Person, String> {

    List<Person> findByLastname(String lastname);                            (1)

    List<Person> findByLastnameFirstname(String lastname, String firstname); (2)
}
1 このメソッドは、指定された lastname を持つすべての人々のクエリを示します。クエリは、And および Or と連結できる制約のメソッド名を解析することによって導出されます。メソッド名は (&(objectclass=person)(lastname=lastname)) のクエリ式になります。
2 このメソッドは、指定された lastname および firstname を持つすべての人々に対するクエリを示します。クエリはメソッド名を解析することによって導出されます。メソッド名は (&(objectclass=person)(lastname=lastname)(firstname=firstname)) というクエリ式になります。

次の表は、クエリメソッドで使用できるキーワードのサンプルを示しています。

表 1: クエリメソッドでサポートされるキーワード
キーワード サンプル 論理的な結果

LessThanEqual

findByAgeLessThanEqual(int age)

(attribute⇐age)

GreaterThanEqual

findByAgeGreaterThanEqual(int age)

(attribute>=age)

IsNotNull, NotNull

findByFirstnameNotNull()

(firstname=*)

IsNull, Null

findByFirstnameNull()

(!(firstname=*))

Like

findByFirstnameLike(String name)

(firstname=name)

NotLike, IsNotLike

findByFirstnameNotLike(String name)

(!(firstname=name*))

StartingWith

findByStartingWith(String name)

(firstname=name*)

EndingWith

findByFirstnameLike(String name)

(firstname=*name)

Containing

findByFirstnameLike(String name)

(firstname=*name*)

(No keyword)

findByFirstname(String name)

(Firstname=name)

Not

findByFirstnameNot(String name)

(!(Firstname=name))