Когда вы используете .saveOrUpdate()
, Hibernate проверит, является ли объект временным (у него нет свойства идентификатора), и если это так, он сделает его постоянным, генерируя его идентификатор и назначая его сеансу.Если объект уже имеет идентификатор, он будет выполнять .update()
.
Из документации :
saveOrUpdate () выполняет следующие действия:
- если объект уже является постоянным в этом сеансе, ничего не делать
- , если другой объект, связанный с сеансом, имеет такой же идентификатор, сгенерировать исключение
- , если у объекта нет свойства идентификатора, сохранить() it
- , если идентификатор объекта имеет значение, присвоенное вновь созданному объекту, save () it
- , если объект версионирован с помощью или, и значение свойства version такое жезначение, присвоенное вновь созданному объекту, сохранить (), иначе обновить () объект