Session.update(object)函数不是用来将持久态object的修改属性下发至db, 而处理目标是在瞬时态或脱管状态的对象
不同状态下,更改object属性后,调用update和调用flush的不同结果见下表:
update | flush | update+flush | 备注 | |
瞬时态(Transient) | 不更新 | 不更新 | 更新 | identity设置为db中已在的id |
持久态(Persistent) | 不更新 | 更新 | 更新 | |
脱管态(Detached) | 不更新 | 不更新 | 更新 |
Saveorupdate 与 update的唯一区别: 对于瞬时态对象,如果没有设置identity, saveorupdate一定会下发insert语句.