【发布时间】: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