Objectify を使用して保持したいこのクラスがあります。このクラスは 1MB を超えるデータを表すため、サイズが 1MB 未満の格納されたバイト配列のフラグメントを表す Blob オブジェクトのリストがあります。
@Entity
public class BigBlob {
@Id
private Long id;
public static final int FRAGMENT_LIMIT = 777 * 1024;
@Serialized
private List<Blob> fragments = new ArrayList<Blob>();
...
}
それでも、「フラグメント」は @Serialized であり、この BigBlob クラス/オブジェクトのサイズが 1MB を超えてレンダリングされます。
このエラーの原因:
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.
@Embedded アノテーションを使用すると、次のエラーが発生します。
Cannot place array or collection properties inside @Embedded arrays or collections
「フラグメント」が別のエンティティとして保存されていることを確認するにはどうすればよいですか?
ところで、私はすでにバイト配列全体を切り刻んでフラグメントをList
ofに入れるバイトチャンクロジックを持っているBlob
ので、この質問はバイトを切り刻む方法には関係ありません。
ほとんどの場合、私が知りたいのは永続的な側面です。