GORM Golang を使用したカスタム Set データ型の永続化
GORM で 1 対多の関係を定義するためにカスタム Set データ型を使用する場合、無効な SQL タイプであるためにエラーが発生する可能性があります。これを解決するには、カスタム タイプの Scanner インターフェイスと Driver Valuer インターフェイスを実装する必要があります。これにより、データベース ドライバーはデータベースにデータを保存および取得する方法を理解できるようになります。
スキャナ インターフェイス
スキャナ インターフェイスには次のメソッドがあります:
func (data *CustomType) Scan(value interface{}) error
このメソッドは、データベースから値をスキャンしてカスタム タイプに変換するために使用されます。データベース値をカスタム型に変換するには、このメソッドを実装する必要があります。
Driver Valuer インターフェイス
Driver Valuer インターフェイスには次のメソッドがあります:
func (data *CustomType) Value() (driver.Value, error)
このメソッドは、カスタム型をデータベース値に変換するために使用されます。カスタム タイプをデータベースが理解できる形式に変換するには、このメソッドを実装する必要があります。
例
マップであるカスタム タイプ UserAccess について考えてみましょう。 Interface{}]struct{}.
type UserAccess map[interface{}]struct{} func (data *UserAccess) Value() (driver.Value, error) { return data.ConvertJSONToString(), nil } func (data *UserAccess) Scan(value interface{}) error { *data = data.ConvertStringToJson(valueString) }
この例では、ConvertStringToJson と ConvertJSONToString UserAccess と JSON 文字列などのデータベース互換形式との間で変換を行うヘルパー関数です。
これらのインターフェイスを実装することで、カスタム データ型の処理方法をデータベース ドライバーに通知し、カスタム データ型を永続化できるようになります。あなたのデータベース。
以上がGolang を使用して GORM でカスタム セット データ型を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。