使用 GORM golang 持久化自定义集数据类型

我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 mysql


goroutine 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 +0xce9

catalog/vendor/github.com/jinzhu/gorm.(*Scope).createTable(0xc000169400, 0xc14e60)

我知道我必须实现某些方法才能实现这一点,但我无法确定要在此处实现哪个方法/回调。


皈依舞
浏览 222回答 1
1回答

慕姐4208626

您需要为自定义类型实现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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go