当您使用
.saveOrUpdate()Hibernate时,将检查对象是否为瞬态对象(它没有标识符属性),如果是这样,它将通过生成标识符并将其分配给会话来使其持久化。如果对象已经具有标识符,它将执行
.update()。
从文档中:
saveOrUpdate()执行以下操作:
- 如果对象在此会话中已经存在,则不执行任何操作
- 如果与该会话关联的另一个对象具有相同的标识符,则引发异常
- 如果对象没有标识符属性,请保存()
- 如果对象的标识符具有分配给新实例化的对象的值,则将其保存()
- 如果对象由“版本”或“时间戳记”版本控制,并且版本属性值与分配给新实例化对象的值相同,则save()否则更新()对象



