【问题标题】:ORMLite does not know how to store classORMLite 不知道如何存储类
【发布时间】:2015-10-02 09:13:31
【问题描述】:

物品

@DatabaseTable
public  class Item {
    @DatabaseField(generatedId = true, canBeNull = false, columnName = "id")
    public int id;
    @DatabaseField(canBeNull = true, foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
        public Enclosure enclosure;
}

外壳

@DatabaseTable
public   class Enclosure {
    @DatabaseField(generatedId= true, columnName = "id", canBeNull = false)
    private long id;
    @DatabaseField
    private String url;
    @ForeignCollectionField(eager = true)
    protected ForeignCollection<Item> items;
}

R.raw.ormlite_config.txt

#################################
# --table-start--
dataClass=com.rssproject.Item
tableName=rssitems
# --table-fields-start--
# --field-start--
fieldName=id
generatedId=true
# --field-end--
# --field-start--
fieldName=enclosure
# --field-end--
# --table-fields-end--
# --table-end--
#################################
#################################
# --table-start--
dataClass=com.rssproject.Enclosure
tableName=rssenclosure
# --table-fields-start--
# --field-start--
fieldName=id
generatedId=true
# --field-end--
# --field-start--
fieldName=url
indexName=rssenclosure_string_idx
# --field-end--
# --table-fields-end--
# --table-end--
#################################

数据库助手

public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config);
    }

插入:

 List<Item> list = daoRuntimeItem.queryForAll();
                daoRuntimeEnclosure.create(item.getEnclosure());
                daoRuntimeItem.create(item);

错误是:

java.lang.IllegalArgumentException: ORMLite does not know how to store class com.rssproject.Enclosure for field enclosure. Use another class or a custom persister.

【问题讨论】:

  • 您的 ormlite_config.txt 不是最新的:fieldName=enclosure 未标记为外来的。干净的构建能解决您的问题吗?
  • @mithrop 这个文件是我自己写的
  • 哦!这样做真是个坏主意:)请看这里(我相信您已经这样做了,因为您可以编写文件):ormlite.com/javadoc/ormlite-core/doc-files/…,请按照有关DatabaseConfigUtil的说明进行操作;)你有吗不使用它的任何特殊原因(技术限制,未集成在构建阶段......)?
  • @mithrop 我有错误找不到通常在 res 目录中的原始目录
  • @mithrop 文件应该放在哪里 DatabaseConfigUtil.java ?

标签: android parent-child ormlite database-table


【解决方案1】:

正如您在评论中所说,您手动编写了ormlite_config.txt,这是一个坏主意。 ORMLite 提供了一个实用程序来为您编写该文件,这要容易得多:)

请查看此页面以获取更多信息:http://ormlite.com/docs/table-config

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多