Связывание сущности с самим собой с помощью отношений "один ко многим"

Я использую GORM для создания ассоциаций моделей в Golang, и у меня есть структура с именем Категория. Категория может иметь много дочерних категорий и может иметь родительскую категорию:

type Category struct {
 Name string `json:"name"`
 Parent Category `json:"parent_category"`
 ParentGroupID uint `json:"parent_group_id"`
 Children []Category `json:"children_categories"`
}

Для этой структуры я получил сообщение об ошибке Недопустимая категория рекурсивного типа. Я проверил документацию GORM, но ничего полезного там не нашел. Есть идеи, как смоделировать такие отношения с GORM?


person TonyGW    schedule 29.04.2018    source источник


Ответы (1)


Вы должны объявить Parent как *Category (указатель на Category) вместо Category.

type Category struct {
 Name string `json:"name"`
 Parent *Category `json:"parent_category"`
 ParentGroupID uint `json:"parent_group_id"`
 Children []Category `json:"children_categories"`
}

Как компилятор узнает размер Parent. Размер указателя известен, но насколько велик то, что содержит само себя? (И внутренняя структура также содержит себя, как внутренняя внутренняя структура и так далее.)

Ссылка: https://stackoverflow.com/a/8261789/4794989

person Alireza Bashiri    schedule 29.04.2018