Мы можем попытаться понять ваши наблюдения, сначала проверив Javado c для CrudRepository :
Сохраняет данную сущность. Используйте возвращенный экземпляр для дальнейших операций , поскольку операция сохранения могла полностью изменить экземпляр сущности.
Одним из возможных объяснений здесь является то, что при сохранении некоторый другой поток или процесс имели также изменил базовый объект. Вот что на самом деле делает метод save()
:
@Transactional
@Override
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity); // <-- this is your use case
}
}
Он вызовет em.merge()
, который будет возвращаться с любыми новыми изменениями, внесенными в запись / сущность в базе данных. Итак, вам следует проверить, что еще может обновлять эту сущность в фоновом режиме.