go - Gorm预紧嵌套结构

标签 go go-gorm

type MainStruct struct {
Defaults
Foo string
Bar string
Baz int64
Struct1  MyStruct1 `gorm:"foreignkey:MainStructID"`
}

type MyStruct1 struct {
    Defaults
    MainStructID int64                  `json:"-"`       
    ID1          int64                  `json:"-"` 
    ID2         int64                   `json:"-"` 
    MyDefault1     MyStruct2 `gorm: "foriegnkey:ID;association_foreignkey:ID1"`
    MyDefault2    MyStruct2 `gorm: "foriegnkey:ID;association_foreignkey:ID2"`
}

type MyStruct2 struct {
    Defaults
    Field1              string
    Field2           string
    Field3          string
}

鉴于上述结构,我想按照以下方法做一些事情

baseVersion MainStruct
db.Where("ID = ?", myInputID).Preload("Struct1").
        Preload("Struct1.MyDefault1").
        Preload("Struct1.MyDefault2").
        First(&baseVersion)

我目前遇到的问题是我根本没有从struct2取回数据。我认为这是Struct1中创建关联的gorm批注的问题...但是我不确定这是什么错误。

不管我如何尝试使MyDefault1和MyDefault2的Preload进入。无论如何,我总是遇到一个错误,提示它无法预加载。我的猜测是gorm注释并不完全正确...但是它似乎遵循了该模式,因此我不确定现在要看什么。

最佳答案

  • MyStruct1中有一个拼写错误:foriegnkeyforeignkey
  • MyStruct1的标记值中有多余的空格。

  • 这些原因使Gorm无法分析MyStruct1的关系。
    type MyStruct1 struct {
        Model
        MainStructID int64     `json:"-"`
        ID1          int64     `json:"-"`
        ID2          int64     `json:"-"`
        MyDefault1   MyStruct2 `gorm:"foreignkey:ID;association_foreignkey:ID1"`
        MyDefault2   MyStruct2 `gorm:"foreignkey:ID;association_foreignkey:ID2"`
    }
    

    关于go - Gorm预紧嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58587949/

    相关文章:

    go - 我如何在 GORM(Golang) 中进行表锁定?

    go - 无法更新具有一对多关联的模型

    oracle - golang中使用gorm连接Oracle数据库

    mysql - 如何在gorm模型中传递动态表名

    go - 下一个goroutine什么时候执行?

    html - Go 不会为所有 HTML 页面渲染 CSS 元素

    xml - 戈朗 : Compare XML structures

    go - 如何在Go中刷新tcp套接字?

    multithreading - 每个唯一 id 不超过一个并发线程运行代码的算法

    go - 没有相关对象的查询