将ID和另一列合并为PK



我有一个有许多StackRequiredParameterStack

StackRequiredParameter通过其名称来识别,但多个堆栈可以具有相同名称的参数。因此,PK是它的名称和它所属的堆栈的id的组合。

type StackRequiredParameter struct {
ID      string `gorm:"uniqueIndex:idx_required_id_unique_per_stack"`
StackID uint   `gorm:"uniqueIndex:idx_required_id_unique_per_stack"`
}

我已经尝试实现Stack如下所示。

type Stack struct {
gorm.Model
Name string `gorm:"unique"`
RequiredParameters []StackRequiredParameter `gorm:"foreignKey:ID,StackID; references:ID; constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"requiredParameters,omitempty"`
}

但是上面的代码返回以下错误

panic: runtime error: index out of range [1] with length 1

我很确定我得到这个错误,因为我试图匹配一个复合键(ID, StackID)与堆栈的ID。但如果我在这里发布的信息不够多,请告诉我。

问题是,我不知道该怎么做。

问题是外键和引用应该包含相等的列

type Stack struct {
gorm.Model
Name               string                   `gorm:"unique"`
RequiredParameters []StackRequiredParameter `gorm:"many2many:required_stack_parameters_joins; foreignKey:ID; joinForeignKey:StackID; References:Name; joinReferences:ParameterID; constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"requiredParameters,omitempty"`
}
type StackRequiredParameter struct {
Name string `gorm:"primaryKey"`
}

相关内容

  • 没有找到相关文章

最新更新