Я пытался использовать функцию «Объединения» в golang orm (https://github.com/jinzhu/gorm/) и не могу создать довольно простую связь. В приведенном ниже примере таблица пользователя содержит данные, но в таблице электронной почты нет. Я пробовал кучу вещей, и я, вероятно, пропустил что-то основное, но не смог найти правильный ответ в github/stackoverflow.Невозможно создать ассоциации через библиотеку orm of golang
Код:
package main
import (
"database/sql"
"log"
"github.com/jinzhu/gorm"
"github.com/mattn/go-sqlite3"
)
var db gorm.DB
type User struct {
Name string
Mail Email
}
type Email struct {
Address string
}
//Initialize DB .
func InitDB() {
var DB_DRIVER string
sql.Register(DB_DRIVER, &sqlite3.SQLiteDriver{})
log.Printf("Initializing Database with ", DB_DRIVER)
dbSql, _ := sql.Open(DB_DRIVER, "simple-sqlite")
var err error
db, err = gorm.Open("sqlite3", dbSql)
if err != nil {
log.Fatalf("Got error when connecting to the database, the error is '%v'", err)
}
db.LogMode(true)
// Then you could invoke `*sql.DB`'s functions with it
db.DB().Ping()
db.DB().SetMaxIdleConns(10)
db.DB().SetMaxOpenConns(100)
// Disable table name's pluralization
db.SingularTable(true)
}
func InitSchema() {
db.CreateTable(&User{}, &Email{})
}
func DoStuff() {
user := User{Name: "Jinzhu", Mail: Email{Address: "[email protected]"}}
db.Create(&user)
}
func main() {
InitDB()
InitSchema()
DoStuff()
}
идут работать main.go печатает следующие выходные 2015/09/30 17:25:04 Инициализация базы данных с% (EXTRA строка =)
[2015-! 09-30 17:25:04] [3.21ms] CREATE TABLE «пользователь» («имя» varchar (255))
[2015-09-30 17:25:04] [4.01ms] CREATE TABLE " адрес электронной почты "(" адрес "varchar (255))
[2015-09-30 17:25:04] [0.54ms] INSERT INTO «пользователь» («имя») ЦЕННОСТИ («Jinzhu»)
Не уверен, что я здесь отсутствует - оцените любой ответ!