パッケージ jakarta.data.repository

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


更新操作を実行するリポジトリメソッドのライフサイクルアノテーション。

Update アノテーションは、アノテーションが付けられたリポジトリメソッドが、データベースにすでに保持されている 1 つ以上のエンティティの状態を更新することを示します。

Update メソッドは、エンティティクラスのインスタンスを 1 つ以上受け入れます。メソッドには、次のいずれかの型のパラメーターが 1 つだけ必要です。

  • 更新するエンティティのクラス、または
  • List<E> または E[]。ここで、E は更新するエンティティのクラスです。

アノテーションが付けられたメソッドは、void として宣言されるか、そのパラメーターの型と同じ戻り値の型を持つ必要があります。

すべての Jakarta Data プロバイダーは、この署名に準拠する Update メソッドを受け入れる必要があります。

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

 @Repository
 interface Garage {
     @Update
     Car update(Car car);
 }
 

アノテーション付きメソッドが非 void の場合、引数として渡されたエンティティインスタンスごとに更新されたエンティティインスタンスを返す必要があります。アノテーション付きメソッドによって返されるインスタンスには、データベースに書き込まれたすべての値 (すべての自動生成された値、更新されたバージョン、更新の結果として変更された増分値を含む) が含まれている必要があります。Iterable または配列の戻り値内のエンティティの順序は、エンティティの一意の識別子に基づいて、引数内のエンティティの位置と一致する必要があります。アノテーション付きメソッドが戻った後、引数として指定された元のエンティティインスタンスは、更新された状態を正確に反映していない可能性があります。

更新は、エンティティの一意の識別子を照合することによって実行されます。エンティティがバージョン管理されている場合 (たとえば、jakarta.persistence.Version)、バージョンの一貫性もチェックされます。識別子とバージョン以外の属性は一致する必要はありません。一致する識別子を持つエンティティがデータベース内に見つからない場合、または一致する識別子を持つエンティティに一致するバージョンがない場合は、アノテーション付きメソッドは OptimisticLockingFailureException を発生させる必要があります。

データベースが BASE モデルに従う場合、または追加モデルを使用してデータを書き込む場合、アノテーション付きメソッドは @Insert メソッドと同じように動作します。

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