我在我的 Android 应用程序中使用 ORMLite。我需要持久化这个类,它有一个 HashMap。有什么好的方法可以坚持呢?这是我第一次尝试持久化 HashMap,也是第一次使用 ORMLite,所以任何建议将不胜感激!
*Edit*如果这有什么区别的话,Exercise 类只是一个 String(也用作数据库中的 id),而 Set 类有一个 int id(也是数据库中的 id)、int 权重和 int 次数。
@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);
}
...
}
哇。坚持一个HashMap
其值为aList
of Set
s。感人的。
So in ORMLite http://ormlite.com/你可以坚持任何Serializable
场地。以下是有关该类型以及如何配置它的文档:
http://ormlite.com/docs/serialized http://ormlite.com/docs/serializable
所以你的字段看起来像:
@DatabaseField(dataType = DataType.SERIALIZABLE)
Map<Exercise, List<Set>> workoutMap;
请注意如果地图很大,那么这很可能不会很有效。另外,你的Exercise
类(以及List
and Set
类)需要实现Serializable
.
如果您需要搜索此地图,您可以考虑将值存储在Set
在另一个表中,在这种情况下您可能想看看 ORMLite 如何持久化“异物” http://ormlite.com/docs/foreign-object.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)