例を挙げて質問を提示します。
以下のようなリポジトリがあることをアサートします。
public interface ExampleObjectRepository extends CrudRepository<ExampleObject, Long> {
}
JpaRepository
インターフェイスを拡張することにより、ExampleObject
リポジトリは次のメソッドを継承します。
T findOne(ID id);
ここで、このメソッドの呼び出し後に ExampleObject への参照を受け取った場合、このメソッドに対して行ったすべての操作が自動的にデータベースに保存されることを確認しました。次に例を示します。
ExampleObject pointInCase = exampleObjectRepository.findOne(1L);
pointInCase.setName("Something else");
件名を読んで、これはExampleObject
インスタンスがであることを意味することを理解していますnot detached
。
これは私の期待に反します。CrudRepository
変更を保存するには、継承された save メソッドを使用する必要があると予想していました。
T save(T entity);
Spring Data JPA リポジトリから返されたオブジェクトが標準としてアタッチされたままであることを確認し、API を使用してリポジトリ内のメソッドをマークして、デタッチされた参照のみを返すようにする方法を説明してくれる人はいますか?
エンティティの状態を変更すると、上記のsave(T entity)
メソッドで使用すると定義も変更される可能性があると思いますので、更新のアイデンティティがどのように処理されるかについても理解していただければ幸いです。