2 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超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"`
}
你顯然也必須調(diào)整你的 go 代碼(例如:檢查 if record.Key != nil, access *record.Keyinstead ofrecord.Key等等......)
我認(rèn)為 gorm 也尊重常規(guī)的 sql 接口,所以你也可以嘗試定義一個實(shí)現(xiàn)的自定義類型:
sql.Scanner
變成on sql -> go conversionsnull
,""
driver.Valuer
(從sql/driver
包中)轉(zhuǎn)到""
onnull
go -> sql conversions。
不過我還沒有測試過,所以你必須自己嘗試一下。

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超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"`
}
要設(shè)置一個值:
key := uuid.NullUUID{
Value: id, // of type uuid.UUID
Valid: true
}
要保存 null,只需保存零值即可。&方法都已定義Scan。Value
- 2 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報