我Set在 go 中创建了一个自定义数据类型,我用它来定义一对多关系。例如在我的架构中,我有以下结构定义type Doctor struct { firstName string lastName string capabilities commons.Set }这capabilities是一组具有以下值的字符串chat, audio, video,通过此设置,我试图将上述结构保留到MySQL使用GORM库中,但是当我这样做时,出现以下错误panic: invalid sql type Set (interface) for mysqlgoroutine 6 [running]:catalog/vendor/github.com/jinzhu/gorm.(*mysql).DataTypeOf(0xc00027e8a0, 0xc00024d680, 0x8, 0x8) /home/kumard/go/src/catalog/vendor/github.com/jinzhu/gorm/dialect_mysql.go:123 +0xce9catalog/vendor/github.com/jinzhu/gorm.(*Scope).createTable(0xc000169400, 0xc14e60)我知道我必须实现某些方法才能实现这一点,但我无法确定要在此处实现哪个方法/回调。
1 回答

慕姐4208626
TA贡献1852条经验 获得超7个赞
您需要为自定义类型实现Scanner & Driver Valuer接口,然后数据库驱动程序才能知道如何将数据存储在数据库中以及如何从数据库中获取数据。
func (data *CustomType) Value() (driver.Value, error) {
...
}
func (data *CustomType) Scan(value interface{}) error {
...
}
示例:假设 UserAccess 是map[interface{}]struct{}类型。
type UserAccess map[interface{}]struct{}
func (data *UserAccess) Value() (driver.Value, error) {
return data.ConvertJSONToString(), nil
}
func (data *UserAccess) Scan(value interface{}) error {
*data = data.ConvertStringToJson(valueString)
}
这里用于将自定义数据类型值转换为数据库兼容类型,如 json-string ConvertStringToJson。ConvertJSONToString
- 1 回答
- 0 关注
- 221 浏览
添加回答
举报
0/150
提交
取消