2017-02-07 4 views
0

Я пытаюсь понять, как работает GORM для одного-единственного реляционного сопоставления с MySQL. У меня 2 структур, как так:Соотношение отношения одного к одному с использованием GORM для Golang

type User struct { 
    Id    uint `gorm:"AUTO_INCREMENT"` 
    FirstName  string `gorm:"column:first_name"` 
    LastName  string `gorm:"column:last_name"` 
    EncryptedUserId string `gorm:"size:255"` 
    Email   string `gorm:"not null;unique"` 
    Password  string `gorm:"not null;unique"` 
    CreatedAt  int64 `gorm:"type(timestamp)"` 
} 

type UserSession struct { 
    Id   uint `gorm:"AUTO_INCREMENT"` 
    UserId  User 
    SessionToken string `gorm:"column:session_token"` 
    CreatedAt int64 `gorm:"type(timestamp)"` 
} 

User и UserSession акций 12:59 отношение. Но когда выполняется код выше, столбец UserId для таблицы UserSession не создается. Даже после указания ограничения внешнего ключа gorm:"ForeignKey:Id" результат такой же. Почему этот код не работает? Что-то не хватает в определении структуры?

Спасибо за помощь заранее!

ответ

0

Я не могу комментировать ваши вопросы, поэтому я хотел бы спросить его здесь: ли вы перенести схему в любом случае, как:

db.AutoMigrate(&User{}, &UserSession{}) 

? Если вы это сделаете, вы должны получить некоторые подробные ошибки в журнале, которые могут быть вам полезны.

+0

Да, я добавил 'db.AutoMigrate (& User {}, & UserSession {})', ошибка, отображаемая в журнале: '(sql: преобразование типа аргумента ExeC# 0: неподдерживаемые типы models.User, struct)' –