You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GORM标记embedded的Address结构体未迁移到SQL表问题咨询

问题原因

  • 核心原因是Address结构体的所有字段均为小写字母开头,属于Go语言的未导出字段:GORM通过反射读取结构体字段的标签和属性,没有权限访问包外不可见的未导出字段,因此迁移时直接忽略了整个Address嵌入结构的所有字段。
  • 你声明的DBModel能正常嵌入,是因为它的所有字段都是大写开头的导出字段,GORM可以正常读取解析。

修复方案

将Address的字段全部改为大写开头的导出字段即可,如果你需要给嵌入的Address字段统一加前缀避免重名,可以补充embeddedPrefix标签:

type Address struct {
    Address string // 改为大写导出
    City    string
    State   string
    Pincode int
    Country string
}

type Office struct {
    DBModel DBModel `gorm:"embedded"`
    // 可选加embeddedPrefix生成address_address、address_city类的字段名
    Address Address `gorm:"embedded;embeddedPrefix:address_"` 
    Name    string
}

重新执行AutoMigrate就会生成对应的Address相关字段了。

内容的提问来源于stack exchange,提问作者Sagar Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:09:01