В первой операции объект ss имеет значение , прикрепленное к сеансу.где, как и во второй операции, его отсоединяется .Так что если у вас есть прикрепленные объекты, вы можете использовать обновление.Если у вас есть отсоединенные объекты, используйте команду слияния, которая сначала присоединяет объект к сеансу, а затем сделает обновление .
РЕДАКТИРОВАТЬ: для вашей информации о прикрепленных (постоянных) и отсоединенные объекты:
Hibernate определяет и поддерживает следующие состояния объекта:
Transient - объект является временным, если его экземпляр был создан с использованием оператора new, иэто не связано с Hibernate Session.Он не имеет постоянного представления в базе данных, и значение идентификатора не было назначено.Временные экземпляры будут уничтожены сборщиком мусора, если приложение больше не будет содержать ссылку.Используйте сеанс Hibernate, чтобы сделать объект постоянным (и пусть Hibernate позаботится о операторах SQL, которые должны быть выполнены для этого перехода).
Persistent - постоянный экземпляр имеет представление вбаза данных и значение идентификатора.Возможно, он просто был сохранен или загружен, однако по определению он входит в область действия сеанса.Hibernate обнаружит любые изменения, внесенные в объект в постоянном состоянии, и синхронизирует состояние с базой данных после завершения единицы работы.Разработчики не выполняют ручные операторы UPDATE или операторы DELETE, когда объект должен быть временным.
Detached - отсоединенный экземпляр - это объект, который был постоянным, но его Session был закрыт,Разумеется, ссылка на объект все еще действительна, и отсоединенный экземпляр может даже измениться в этом состоянии.Отдельный экземпляр может быть снова присоединен к новому сеансу позднее, что делает его (и все модификации) снова постоянным.Эта функция позволяет модели программирования для длительных единиц работы, которые требуют времени на обдумывание пользователем.Мы называем их прикладными транзакциями, т. Е. Единицей работы с точки зрения пользователя.