我正在构建一个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
的实例可以在List<PerformedExercise>
中共享相同的PerformedExercise
。在我的代码中,它们是对PerformedExercise
实例的引用。当我的代码序列化和反序列化时,我需要能够保留对这些PerformedExercise
的引用。这怎么可能?
您需要为数据库创建单独的 WorkoutDB 模型,而不是对象列表 包含基元类型的列表,如儿童练习列表
例如:
public class WorkoutDB {
private UUID mId;
private Date mStartDate;
private Date mEndDate;
//list of Ids
private List<String> mIdsExercises;
private String mNotes;
}
因此,从基地获得锻炼后,您可以通过 ids 列表获取所有锻炼。