在 ORMLite 中为 ApplicationSettings 存储多个 ArrayList 的最佳方法
Posted
技术标签:
【中文标题】在 ORMLite 中为 ApplicationSettings 存储多个 ArrayList 的最佳方法【英文标题】:Best way to store several ArrayLists in ORMLite for ApplicationSettings 【发布时间】:2012-11-26 18:05:52 【问题描述】:现在我正试图在ORMLite
的帮助下将应用程序的设置保存到我的DB
。
我的设置由不同的String[]
或ArrayList<String>
或Map
组成,实际上只是一堆Strings
。所以我的问题是,在这种情况下我应该使用什么数据类型和可选的,也许你也可以给我一个小的code example
。
现在我尝试了不同的方法,但我从未对解决方案感到满意。我试过这样的东西:
private HashMap<String, ArrayList<String>> configurationMap;
private String[] stringArr1;
private String[] stringArr2;
private ArrayList<String> arrList1;
但是在设置 DB Datatypes
时,我总是想,“我不想要额外的表来存储数据”或“将映射序列化到数据库很糟糕......”。
也许有人知道如何以一种既方便又方便的方式解决这个问题?
【问题讨论】:
现在用 ArrayList 实现了。这很好用@DatabaseField(id = false, foreign = false, columnName = ConfigurationModel.SAM_ACC_VALUES_TO_IGNORE, dataType = DataType.SERIALIZABLE) public ArrayList<String> samAccountValuesToIgnore;
查看***.com/questions/18441595/… 以获得更简单的解决方案
【参考方案1】:
对于arrayList,您可以简单地执行以下操作:
public class YourClass
@GeneratedId
private int id;
@ForeignCollectionField
private Collection<MyString> bunchOfStrings = new ArrayList<MyString>();
...
在 MyString 类中,您有以下内容:
public class MyString
@DatabaseField(canBeNull = true, foreign = true)
private YourClass yourClass;
@DatabaseField
private String text;
....
仅此而已
【讨论】:
为什么将ForeignCollectionField
保存为Collection<MyString>
而不是ArrayList<MyString>
?可以直接保存为ArrayList<MyString>
吗?使用bunchOfStrings
对象时,是否只要使用它就将其转换为ArrayList<MyString>
?
@Yuchen 说实话我不记得我为什么使用collection而不是ArrayList(已经3年多了)。但我记得我不得不使用集合而不是 ArrayList 我认为这是当时的一些限制。
@DrissBounouar,感谢您回来。这是ORMLite的局限。我对这个here 提出了一个单独的问题。引用:“订单的字段类型必须是 ForeignCollection以上是关于在 ORMLite 中为 ApplicationSettings 存储多个 ArrayList 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章