ホームページ > バックエンド開発 > Golang > GORM を使用して MySQL でカスタム Go Set データ型を永続化するにはどうすればよいですか?

GORM を使用して MySQL でカスタム Go Set データ型を永続化するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-21 09:17:10
オリジナル
1028 人が閲覧しました

How to Persist a Custom Go Set Data Type in MySQL using GORM?

GORM Go を使用したカスタム Set データ型の永続化

問題:

Go でカスタム Set データ型が定義されています。 threadUnsafeSet など、GORM ライブラリを使用してこのデータ型を MySQL に永続化しようとしています。ただし、セットの無効な SQL タイプに関連するエラーが発生します。

解決策:

この問題を解決するには、Value メソッドと Scan メソッドを実装する必要があります。カスタム セットのデータ型に応じて。これらのメソッドにより、データベース ドライバーはデータベース互換形式でデータを保存および取得できるようになります。

実装例は次のとおりです。

type ThreadUnsafeSet map[interface{}]struct{}

func (data *ThreadUnsafeSet) Value() (driver.Value, error) {
    // Implement the logic to convert data to a database-compatible format, e.g., JSON
    return data.ConvertJSONToString(), nil
}

func (data *ThreadUnsafeSet) Scan(value interface{}) error {
    // Implement the logic to convert from the database-compatible format to the custom set data type
    *data = data.ConvertStringToJson(valueString)
    return nil
}
ログイン後にコピー

補足:

Value メソッドと Scan メソッドでは、JSON などのシリアル化またはエンコード技術を使用して、カスタム データ型を文字列または互換性のあるバイト形式に変換できます。 MySQL。これにより、データを個別の列ではなく単一のエンティティとして保存および取得できるようになります。

以上がGORM を使用して MySQL でカスタム Go Set データ型を永続化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート