我在Android应用中使用ORMLite。我需要坚持这个有HashMap的类。什么是坚持它的好方法?这是我第一次尝试坚持HashMap,也是第一次使用ORMLite,所以任何建议都会非常感激!
*的 修改 * 如果这有任何区别,那么Exercise类只是一个String(在数据库中也作为id),而Set类有一个int id(在数据库中也是id),int weight和int reps。
@DatabaseTable
public class Workout {
@DatabaseField(generatedId = true)
int id;
@DatabaseField(canBeNull = false)
Date created;
/*
* The hashmap needs to be persisted somehow
*/
HashMap<Exercise, ArrayList<Set>> workoutMap;
public Workout() {
}
public Workout(HashMap<Exercise, ArrayList<Set>> workoutMap, Date created){
this.workoutMap = workoutMap;
this.created = created;
}
public void addExercise(Exercise e, ArrayList<Set> setList) {
workoutMap.put(e, setList);
}
...
}
答案 0 :(得分:12)
哇。坚持HashMap
,其值为List
Set
秒。令人印象深刻的。
因此,在ORMLite中,您可以保留任何Serializable
字段。以下是有关类型的文档以及如何配置它:
所以你的领域看起来像是:
@DatabaseField(dataType = DataType.SERIALIZABLE)
Map<Exercise, List<Set>> workoutMap;
请注意如果地图非常大,那么这很可能不是很有效。此外,您的Exercise
班级(以及List
和Set
班级)需要实施Serializable
。
如果您需要搜索此地图,可以考虑将Set
中的值存储在另一个表中,在这种情况下,您可能需要查看ORMLite如何保持"foreign objects"。