gpt4 book ai didi

java - 在 ORMLite 中持久化 HashMap

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:51 24 4
gpt4 key购买 nike

我在我的 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);
}
...
}

最佳答案

哇。持久化 HashMap,其值为 SetList。令人印象深刻。

所以在ORMLite您可以保留任何 Serializable 字段。以下是有关类型以及如何配置它的文档:

http://ormlite.com/docs/serializable

所以你的字段看起来像:

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

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

如果您需要搜索此 map ,您可能会考虑将 Set 中的值存储在另一个表中,在这种情况下您可能想看看 ORMLite 如何持久化 "foreign objects" .

关于java - 在 ORMLite 中持久化 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com