Session.update(object)函數不是用來將持久態object的修改屬性下發至db, 而處理目標是在瞬時態或脫管狀態的對象
不同狀態下,更改object屬性後,調用update和調用flush的不同結果見下表:
update | flush | update+flush | 備註 | |
瞬時態(Transient) |
不更新 | 不更新 | 更新 | identity設置爲db中已在的id |
持久態(Persistent) |
不更新 | 更新 | 更新 | |
脫管態(Detached) |
不更新 | 不更新 | 更新 |
Saveorupdate 與 update的唯一區別: 對於瞬時態對象,如果沒有設置identity, saveorupdate一定會下發insert語句.