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 关注
- 113 浏览
添加回答
举报