在ORMLite中保留HashMap

fre*_*red 9 java orm android hashmap ormlite

我在我的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);
    }
    ... 
}
Run Code Online (Sandbox Code Playgroud)

Gra*_*ray 12

哇.坚持一个HashMap它的值是一个ListSet秒.令人印象深刻.

所以在ORMLite中你可以坚持任何Serializable领域.这是关于类型的文档以及如何配置它:

http://ormlite.com/docs/serializable

所以你的领域看起来像:

@DatabaseField(dataType = DataType.SERIALIZABLE)
Map<Exercise, List<Set>> workoutMap;
Run Code Online (Sandbox Code Playgroud)

请注意,如果地图非常大,那么这很可能不是很有效.另外,你的Exercise类(和ListSet类)需要实现Serializable.

如果需要搜索此映射,可以考虑将值存储Set在另一个表中,在这种情况下,您可能需要查看ORMLite如何持久保存"外来对象".