在 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&lt;String&gt; 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&lt;MyString&gt; 而不是ArrayList&lt;MyString&gt;?可以直接保存为ArrayList&lt;MyString&gt;吗?使用bunchOfStrings 对象时,是否只要使用它就将其转换为ArrayList&lt;MyString&gt; @Yuchen 说实话我不记得我为什么使用collection而不是ArrayList(已经3年多了)。但我记得我不得不使用集合而不是 ArrayList 我认为这是当时的一些限制。 @DrissBounouar,感谢您回来。这是ORMLite的局限。我对这个here 提出了一个单独的问题。引用:“订单的字段类型必须是 ForeignCollection 或 Collection - 不支持其他集合,因为它们要重得多,支持的方法很多”。

以上是关于在 ORMLite 中为 ApplicationSettings 存储多个 ArrayList 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

在MAMP中为mysql创建符号链接

android ORMlite的应用

如何在 android 中使用 ProGuard 和 OrmLite

ubuntu中为Pycharm添加快捷启动方式

为啥我不能在 ormlite 中使用自定义 DAO 类?

Android—Ormlite框架简单的操作数据库