Gorm: 列挙型の問題

作成日 2014年11月26日  ·  3コメント  ·  ソース: go-gorm/gorm

私は次のものを持っています:

type BufferType string
const (
    Console BufferType = "console"
    Channel BufferType = "channel"
    Conversation BufferType = "conversation"
)

type Buffer struct {
    Bid  int64  `gorm:"primary_key:yes"`
    Type BufferType `sql:"not null;type:ENUM('console', 'channel', 'conversation')"`
    Name string `sql:"size:255;not null"`
}

db.Save(buffer)を実行しようとすると、次のエラーが発生します。
sql: converting Exec argument #1's type: unsupported type BufferType, a string)

BufferTypeが実際には単なる文字列であることを解決し、保存することは可能でしょうか? この構造体をdb.Find()でロードしようとすると、同様のエラーが発生します。

最も参考になるコメント

私も同じ問題を抱えていました。 @brampの解決策はまだ私にエラーを与えました。 以下は私のために働いた:

func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.([]byte)); return nil }
func (u BufferType) Value() (driver.Value, error)  { return string(u), nil }

違いは、 []byte代わりにstringです。 このstackoverflowスレッドは私を助けました: http

全てのコメント3件

さらにデバッグした後、このエラーはgolangデータベース/ SQLコードから発生しているようです

func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.(string)); return nil }
func (u BufferType) Value() (driver.Value, error)  { return string(u), nil }

少し不格好ですが、データベースが正しくマップする方法を知るのに役立ちます。 必要に応じて、ここにエラーチェックを追加することもできます。

私も同じ問題を抱えていました。 @brampの解決策はまだ私にエラーを与えました。 以下は私のために働いた:

func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.([]byte)); return nil }
func (u BufferType) Value() (driver.Value, error)  { return string(u), nil }

違いは、 []byte代わりにstringです。 このstackoverflowスレッドは私を助けました: http

+1の優れたソリューション。 これがGORMドキュメントにあったらいいのにと思います。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

izouxv picture izouxv  ·  3コメント

Quentin-M picture Quentin-M  ·  3コメント

satb picture satb  ·  3コメント

koalacxr picture koalacxr  ·  3コメント

pjebs picture pjebs  ·  3コメント