我使用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
,但它只会创建用户。
我做错了什么?
答案 0 :(得分:0)
我遇到了类似的问题,但我发现这是匿名类型的问题。
如果你有
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
}