Closed 42thcoder closed 2 years ago
// Account 用户钱包 type Account struct { gorm.Model UserID *uint User *User GoldAmount decimal.Decimal `gorm:"type:decimal(20,2)"` //金币余额 Version optimisticlock.Version `gorm:"default:0"` }
var account Account db.First(&account) account.CostGold(decimal.NewFromFloat(100)) db.Updates(&account)
未引入 Version 字段时, db.Updates(&account) 工作起来没问题, 也符合 DDD 的常见写法; 引入后报错:
Version
db.Updates(&account)
sql: UPDATE `accounts` SET `gold_amount`='3400',`Model`='{47 2022-03-05 12:40:14.574 +0800 CST 2022-03-09 01:20:14.138 +0800 CST {0001-01-01 00:00:00 +0000 UTC false}}',`version`=`version`+1,`updated_at`='2022-03-09 01:20:14.182' WHERE `accounts`.`deleted_at` IS NULL AND `id` = 47 "error": "sql: converting argument $7 type: unsupported type gorm.Model, a struct"
Fixed. Please upgrade to the latest
简化后的场景
model 定义
demo
问题
未引入
Version
字段时,db.Updates(&account)
工作起来没问题, 也符合 DDD 的常见写法; 引入后报错: