2017-05-18 16 views
1

私はGORMと非常に単純なbelongsToの関連付けを行いますが、主キーはIdではありません。Golang GORMの無効な関連付け

私の構造体のような、次のとおりです。

type State struct { 
    FIPS string `gorm:"type:char(2);primary_key;column:FIPS"` 
    Name string `gorm:"not null"` 
    Area float64 `gorm:"type:real;not null"` 
} 

type ZipCode struct { 
    ZipCode string `gorm:"type:char(5);primary_key;"` 
    Name  string `gorm:"not null"` 
    State  State `gorm:"ForeignKey:StateFIPS;AssociationForeignKey:FIPS"` 
    StateFIPS string `gorm:"type:char(2);column:state_FIPS;not null"` 
} 

し、次のコードで:

var zc ZipCode 
var s State 
db.Model(&zc).Related(&s) 

私はエラーを取得:[2017-05-18 14:26:13] invalid association []と郵便番号の検索は、状態をロードしません。 GORMは非Idの主キーが好きではないのですか、何か不足していますか?

あなたの現在のコードで

答えて

0

:あなたはあなたのzc変数には何も設定されていない

var zc ZipCode 
var s State 
db.Model(&zc).Related(&s) 

。そのため、空のデータを持つinvalid association []というエラーが表示されます。あなたのようなデータベースから郵便番号データを取得する必要があります。この問題を解決するには

db.First(&zc, 1) // find ZipCode with id 1. 

、その後、あなたのzc完全なコードを関連付けることができますが、次のようになります。

var zc ZipCode 
var s State 

db.First(&zc, 1) // find ZipCode with id 1. 
db.Model(&zc).Related(&s) 

注:私はないんだけどこの実際のコードをテストしますが、問題を解決すると思います。

関連する問題