データベースにデータを (blob として) 格納するために、プロトコル バッファを使用します。ある時点で、それらを再度読み取り、変更して再度保存する必要があります。
問題は、プロトコル バッファ メッセージ オブジェクトが不変であることです。私たちが念頭に置いていたのは、プロトコル バッファ メッセージをプロトタイプとして使用して、新しいビルダー オブジェクトを作成することだけでした。
Foo.Builder.newBuilder(prototype)
これは基本的に機能します。しかし、ネストされた構造があるため、プロトタイプ オブジェクトには実際にはメッセージ自体である属性が含まれているため、これは機能しません。ドキュメントからの抜粋:
埋め込まれたメッセージと文字列オブジェクトは不変であるため、オリジナルとコピーの間で共有されます。
変更可能な新しいビルダー オブジェクトに構造全体を複製する方法はありますか?