9

我在我的 Android 应用程序中使用 ORMLite。我需要坚持这个类,它有一个 HashMap。有什么好的坚持方法?这是我第一次尝试持久化 HashMap,也是第一次使用 ORMLite,所以任何建议都将不胜感激!

*编辑* 如果这有什么不同,Exercise 类只是一个字符串(在数据库中也用作 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);
    }
    ... 
}
4

1 回答 1

12

哇。持久化HashMap其值为sList的a Set。感人的。

因此,在ORMLite中,您可以保留任何Serializable字段。这是有关类型以及如何配置它的文档:

http://ormlite.com/docs/serializable

所以你的领域看起来像:

@DatabaseField(dataType = DataType.SERIALIZABLE)
Map<Exercise, List<Set>> workoutMap;

请注意,如果地图很大,那么这很可能不会非常高效。此外,您的Exercise类(以及ListandSet类)需要实现Serializable.

如果您需要搜索此映射,您可能会考虑将值存储Set在另一个表中,在这种情况下,您可能想看看 ORMLite 如何持久化“外部对象”

于 2011-08-23T14:07:41.793 回答