Ваша проблема может быть связана с несколькими моментами в структуре определений и с тем, как работает GORM с наследованием. В частности, нужно убедиться, что у вас правильно настроены связи и поля в структуре. Давайте разберём основные моменты и решения:
1. **Используйте теги правильно**: Убедитесь, что все поля имеют соответствующие теги для GORM. Например, если вы хотите использовать `UUID` как первичный ключ, определите его в родительской структуре, и он должен быть помечен как `gorm:"primaryKey"`.
2. **Проверьте вложенные структуры**: Когда вы используете вложенные структуры (наследование), GORM должен правильно обрабатывать их. Убедитесь, что все ваши поля публичные (с большой буквы), иначе GORM не сможет увидеть их.
3. **Измените структуры**: Попробуйте изменить ваши структуры по следующему примеру:
```go
type Object struct {
gorm.Model
UUID string `gorm:"type:uuid;primaryKey;default:gen_random_uuid()"`
}
type Reference struct {
Object
Presentation string
}
type CarsCharacteristic struct {
Reference
}
```
Обратите внимание на:
- Использование `type:uuid` для поля `UUID`.
- Убедитесь, что все структуры начинаются с заглавной буквы, чтобы они были экспортируемыми.
4. **Инициализация GORM**: Убедитесь, что вы правильно инициализируете GORM перед вызовом `AutoMigrate`.
Пример инициализации:
```go
db, err := gorm.Open(postgres.Open("your_connection_string"), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
err = db.AutoMigrate(&CarsCharacteristic{})
if err != nil {
log.Fatal(err)
}
```
5. **Проверка наличия ошибок**: Проверьте вывод ошибок после вызова `AutoMigrate`, чтобы убедиться, что нет ошибок, которые блокируют создание колонок.
Если после всех этих шагов таблица все еще создаётся без колонок, попробуйте проверить версию GORM и PostgreSQL, а также, возможно, провести отладку с помощью `db.Debug().AutoMigrate(&CarsCharacteristic{})`, чтобы увидеть SQL-запросы, которые генерируются. Это позволит вам понять, где происходит сбой.