2 回答

TA貢獻1856條經驗 獲得超17個贊
嘗試將您的字段類型更改為指針類型:
type Asdf struct {
ID uint64 `json:"id" gorm:"type:uuid;column:id"`
Name string `json:"name" gorm:"column:name"`
Key *uuid.UUID `json:"key" gorm:"column:key"`
CreatedAt time.Time `json:"created_at" gorm:"column:created_at"`
UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at"`
}
你顯然也必須調整你的 go 代碼(例如:檢查 if record.Key != nil, access *record.Keyinstead ofrecord.Key等等......)
我認為 gorm 也尊重常規的 sql 接口,所以你也可以嘗試定義一個實現的自定義類型:
sql.Scanner
變成on sql -> go conversionsnull
,""
driver.Valuer
(從sql/driver
包中)轉到""
onnull
go -> sql conversions。
不過我還沒有測試過,所以你必須自己嘗試一下。

TA貢獻1155條經驗 獲得超0個贊
問題中未指定您使用的包。如果你使用satori/go.uuid,你可以使用NullUUID 類型:
type Asdf struct {
ID uint64 `json:"id" gorm:"type:uuid;column:id"`
Name string `json:"name" gorm:"column:name"`
NullableKey uuid.NullUUID `json:"key" gorm:"column:key"`
CreatedAt time.Time `json:"created_at" gorm:"column:created_at"`
UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at"`
}
要設置一個值:
key := uuid.NullUUID{
Value: id, // of type uuid.UUID
Valid: true
}
要保存 null,只需保存零值即可。&方法都已定義Scan。Value
- 2 回答
- 0 關注
- 138 瀏覽
添加回答
舉報