我用一个例子来提出这个问题。
断言我们有一个存储库,如下所示:
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
来保存更改:
T save(T entity);
是否有人愿意确认从 Spring Data JPA 存储库返回的对象仍然作为标准附加,并解释如何使用 API 标记存储库中的方法,使其仅返回分离的引用?
我想更改实体的状态也可能会在与所述方法一起使用时更改其定义save(T entity)
,因此我也希望了解如何处理更新的身份。