bugfix> java > 投稿

データベースにいくつかのオブジェクトを保存するAndroidアプリを構築しています。私のオブジェクトのいくつかの属性は、GsonのJsonで最初にシリアル化されます。ここに問題があります、私は Workout を持っていますクラス

public class Workout {
    private UUID mId;
    private Date mStartDate;
    private Date mEndDate;
    private List<PerformedExercise> mPerformedExercises;
    private String mNotes;
}

および演習クラス

public class Exercise {
    private UUID mId;
    private String mName;
    private String mCategory;
    private List<PerformedExercise> mPerformedExercises;
}

これらのオブジェクトは両方ともデータベースに保存されます。 List<PerformedExercise> 以外のすべて 通常のプリミティブ型として保存されます。リストは最初にJsonでシリアル化されてから保存されます。問題は、 Exercise のインスタンスおよび Workout 同じ PerformedExercise を共有できますで List<PerformedExercise> 。私のコードでは、それらは PerformedExercise のインスタンスへの参照です 。これらの PerformedExercise への参照を保持できるようにする必要がありますコードがシリアライズおよびデシリアライズされるとき。これはどのように可能ですか?

回答 1 件
  • データベース用に個別のWorkoutDBモデルを作成する必要がありますが、代わりにオブジェクトのリストを作成します 子供のリストのようなプリミティブ型のリストが含まれています

    例えば:

    public class WorkoutDB {
        private UUID mId;
        private Date mStartDate;
        private Date mEndDate;
        //list of Ids
        private List<String> mIdsExercises;
        private String mNotes;
    }
    
    

    したがって、ベースからワークアウトを取得した後、IDリストを介してすべての演習を取得できます。

あなたの答え