Mysql 使用GORM的Golang一对一关系映射

Mysql 使用GORM的Golang一对一关系映射,mysql,go,go-gorm,Mysql,Go,Go Gorm,我试图了解GORM如何使用MySQL进行一对一关系映射。我有两个这样的结构: type User struct { Id uint `gorm:"AUTO_INCREMENT"` FirstName string `gorm:"column:first_name"` LastName string `gorm:"column:last_name"` EncryptedUserId string `gorm:"

我试图了解GORM如何使用MySQL进行一对一关系映射。我有两个这样的结构:

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
共享一对一关系。但当运行上述代码时,不会创建
UserSession
表的
UserId
列。即使在指定外键约束后
gorm:“ForeignKey:Id”

结果是一样的。为什么上面的代码不起作用?结构定义中是否缺少任何内容?

我无法对您的问题进行评论,因此我会在这里提问: 您是否以如下方式迁移架构:

db.AutoMigrate(&User{}, &UserSession{})
??
如果您这样做了,您应该在日志中获得一些详细的错误,这可能对您有用。

我获得类似于工作的内容的方法是这样的

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

是的,我已经添加了
db.AutoMigrate(&User{},&UserSession{})
,日志中显示的错误是
(sql:转换Exec参数#0的类型:不支持的类型模型。用户,结构)