【问题标题】:Unsupported relations for schema架构不支持的关系
【发布时间】:2021-04-28 16:08:33
【问题描述】:

我有四个嵌套模型(此处简化):

type Client struct {
    gorm.Model
    UUID                   uuid.UUID `gorm:"type:uuid"`
    Activity               Activity 
}

type Activity struct {
    gorm.Model
    ClientID        uint
    LoginActivities []LoginActivity
}

type LoginActivity struct {
    gorm.Model
    ActivityID uint
    UUID       uuid.UUID
    Timestamp  time.Time
    Device     DeviceInfo
}

type DeviceInfo struct {
    gorm.Model
    LoginActivityID uint
    Platform        string
}

我想检索所有嵌套模型:

database.db.
    Where("uuid = ?", clientID).
    Preload("Activity.LoginActivities.DeviceInfos").
    First(&client). 
    Error

但是,我收到错误 DeviceInfos: unsupported relations for schema LoginActivity

是模型设置错误还是查询错误?

【问题讨论】:

    标签: go go-gorm


    【解决方案1】:

    您使用了Preload("Activity.LoginActivities.DeviceInfos"),但在LoginActivity 中代表关系的成员是Device

    您应该改为使用 Preload("Activity.LoginActivities.Device") 预加载

    【讨论】:

    • 你是对的,现在错误消失了(并且生成了正确的选择语句)。但是,返回的对象仅填充到LoginActivities,但Device 字段保持为空。有什么线索吗?
    • 没关系,这是我刚刚在表示模型中发现的另一个映射错误...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2017-06-26
    • 2013-11-09
    • 2014-02-07
    • 2013-02-08
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多