Я представляю вопрос на примере.
Убедитесь, что у нас есть репозиторий, например, ниже:
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);
Может ли кто-нибудь быть достаточно любезен, чтобы подтвердить, что объекты, возвращенные из репозитория данных JPA Spring, остаются прикрепленными в качестве стандарта и объясняют, как использовать API для отметки метода в репозитории, так что он возвращает только отобранные ссылки?
Я предполагаю, что изменение состояния объекта также может изменить его определение, когда оно используется с указанным методом save(T entity)
, поэтому я также хотел бы понять, как обрабатывается идентификация для обновлений.