パッケージ jakarta.data.repository

アノテーションインターフェース Find


エンティティを返すリポジトリメソッドに、パラメーターベースの自動クエリメソッドとしてアノテーションを付けます。

Find アノテーションは、アノテーションが付けられたリポジトリメソッドが、そのパラメーターとそのパラメーターに割り当てられた引数に基づいてエンティティを取得するクエリを実行することを示します。メソッドの戻り値の型は、クエリによって返されるエンティティの型を識別します。アノテーションが付けられたメソッドの各パラメーターは、次のいずれかである必要があります。

  • エンティティクラスの永続フィールドまたはプロパティとまったく同じ型と名前(Java ソースのパラメーター名、または @By によって割り当てられた名前)を持つ、または
  • 型は LimitSortOrder、または PageRequest です。

クエリは、エンティティの永続フィールドに一致するメソッドパラメーターから推測されます。

@Find でアノテーションが付けられたメソッドには特定の命名規則はありません。これらのメソッドは任意に命名することができ、その名前には Jakarta Data 仕様で定義された意味は含まれません。

例: ガレージを表すインターフェースを考えてみましょう:

 @Repository
 interface Garage {
     @Find
     List<Car> getCarsWithModel(@By("model") String model);
 }
 

@Find アノテーションは、getCarsWithModel(model) メソッドが model フィールドに指定された値を持つ Car インスタンスを取得することを示します。

@Find アノテーションが付けられたメソッドは、次のいずれかの型を返す必要があります。

  • エンティティ型 E、メソッドが単一のインスタンスを返す場合
  • Optional<E>、メソッドが最大で 1 つのインスタンスを返す場合
  • エンティティ配列型 E[]
  • List<E>,
  • Stream<E>、または
  • Page<E> または CursoredPage<E>

Find というアノテーションが付けられた自動クエリメソッドは、パラメーターベースの条件を満たすすべてのレコードのエンティティインスタンスを返します。

  • アノテーション付きメソッドの戻り値の型が E または Optional<E> であり、複数のレコードがクエリ条件を満たす場合、メソッドは NonUniqueResultException をスローする必要があります。
  • アノテーション付きメソッドの戻り値の型が E であり、クエリ条件を満たすレコードがない場合、メソッドは EmptyResultException をスローする必要があります。

@Find@Query@Insert@Update@Delete@Save などのアノテーションは相互に排他的です。リポジトリインターフェースの特定のメソッドには、最大で 1 つの @Find アノテーション、ライフサイクルアノテーション、クエリアノテーションを含めることができます。

関連事項: