正常情況下在使用gorm做修改操作時,會使用omit過濾一些字段,比如上圖中修改的時候就不應該修改創建時間和創建人字段的值。
關鍵點在於上圖如果omit中沒有增加id字段,會造成gorm的全局查詢條件問題,
簡單來講在下次查詢的時候如果查詢id=1的數據時,gorm會自動把上圖中的查詢條件拼接上去
會把原本的sql
select * from order where id= 1
改成
select * from order where (id=1) and id=10
結果則是查詢不到數據,有嘗試查看gorm的源碼,找到爲什麼會這樣的原因,但是因爲時間有限,沒有找到原因。
如果你知道原因,歡迎評論