我使用 Golang 和 GORM。
我有一个 User
结构,它有一个 Association
。
type User struct {
ID int
...
}
type Association struct {
ID int
UserID int
}
我还有一个AssoUser
结构,它由一个匿名字段User
组成,并有一个指向Assocation
的指针。
type AssoUser struct {
User
Asso *Association
}
当我运行时
var assoUser AssoUser
assoUser.Asso = &Association{
Name : "asso_name",
...
}
assoUser.Name = "user_name"
...
// filling the struct
db.Debug().Create(&assoUser)
我希望它创建 User
和 Association
,但它只创建了 User。
我做错了什么?
最佳答案
我遇到了类似的问题,但我发现这是匿名类型的问题。
如果你有
type Thing struct {
Identifier string
ext
}
type ext struct {
ExtValue string
}
gorm 将无法找到 ext
,因此它根本不会出现在表中。
但是,如果你有
type Thing struct {
Identifier string
Ext
}
type Ext struct {
ExtValue string
}
ExtValue
将作为普通字符串出现在表中,就好像它是 Thing
对象的一部分一样。
如果你想建立一对一的关系,你必须在你的结构中包含一个id。所以上面的例子看起来像这样:
type Thing struct {
Identifier string
Ext
}
type Ext struct {
ThingId uint
ExtValue string
}
关于Gorm - 与匿名字段有一个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721475/