Я использую GORM с базой данных PostgreSQL.Где у меня есть ранее существовавшая миграция (без использования gorm для обработки миграций).У меня есть 2 структуры, которые связаны друг с другом, которые представляют 2 таблицы, которые имеют много связей в указанной базе данных.
Миграция:
CREATE TABLE IF NOT EXISTS items_captions (
id varchar(50) NOT NULL,
item_id varchar(50) NOT NULL REFERENCES items(item_id) ON DELETE CASCADE,
source varchar(50) NOT NULL,
filepath varchar(256) NOT NULL,
language varchar(50),
language_confidence decimal,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
PRIMARY KEY(id)
);
CREATE TABLE IF NOT EXISTS captions (
id varchar(50) NOT NULL,
item_captions_id varchar(50) NOT NULL REFERENCES items_captions(id) ON DELETE CASCADE,
start_at DECIMAL NOT NULL,
end_at DECIMAL NOT NULL,
"text" TEXT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
PRIMARY KEY(id)
);
Определения структур:
type ItemsCaptions struct {
ID string `gorm:"id"`
ItemID string `gorm:"item_id"`
Source string `gorm:"source"`
Filepath string `gorm:"filepath"`
Language string `gorm:"language"`
LanguageConfidence float64 `gorm:"language_confidence"`
CreatedAt time.Time `gorm:"created_at"`
UpdatedAt time.Time `gorm:"updated_at"`
Captions []Caption `gorm:"foreignkey:ItemCaptionsID"`
}
type Caption struct {
ID string `gorm:"id"`
ItemCaptionsID string `gorm:"item_captions_id"`
StartAt float64 `gorm:"start_at"`
EndAt float64 `gorm:"end_at"`
Text string `gorm:"text"`
CreatedAt time.Time `gorm:"created_at"`
UpdatedAt time.Time `gorm:"updated_at"`
}
Проблема: при предварительном формировании вставки данные, кажется, вставляются правильно.Проблема возникает при попытке запросить данные обратно из базы данных.
var itemCaptions []ItemsCaptions
db.Find(&itemCaptions).Error
var captions []Caption
db.Model(&itemCaptions[0]).Related(&captions)
// no items from db are returned
// However querying the database directly shows that the data was inserted as expected.
Кроме того, я получаю следующее сообщение в журналах от gorm invalid association []
Дополнительная информация: Я пыталсязапустите то же самое в db.Debug (), и она не выдаст никакой дополнительной информации.
Очевидно, что я делаю что-то не так, но мне не ясно, что это такое.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.