Недопустимая ассоциация [] имеет много использующих Postgresql - PullRequest
0 голосов
/ 26 августа 2018

Я использую 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 (), и она не выдаст никакой дополнительной информации.

Очевидно, что я делаю что-то не так, но мне не ясно, что это такое.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

...