foreignAutoCreate无法正常工作?

时间:2011-11-04 10:51:58

标签: android ormlite

在我的项目中,我已经缓存了外部注释,并且手动插入和删除了级联,但我现在正在尝试更新我的代码以使用新的foreignAutoCreate注释,我注意到了一些问题。第一个是DatabaseFieldConfigLoader不会将此字段添加到生成的配置文件中。在该类的4.29版本的第212行附近似乎缺少相应的代码。

即使手动将定义添加到配置文件后,加载配置文件时似乎也没有正确设置。在MappedCreate类的第102行,tableInfo.isForeignAutoCreate()对具有注释集的类返回false

作为参考,这是我宣布我的班级成员的方式:

@DatabaseFieldSimple
@DatabaseFieldForeign(foreign = true, foreignAutoRefresh=true, foreignAutoCreate=true)
public Response response;

我的子类Response具有以下id字段

@DatabaseFieldSimple
@DatabaseFieldId(generatedId = true)
public int id;

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

不幸的是,使用foreignAutoRefresh未正确配置version字段(以及DatabaseFieldConfigLoader) - 用于读取和写入类配置。我已打开this bug并将其固定在行李箱中。该修补程序已添加到版本4.30中的ORMLite

我已经在@DatabaseField的末尾添加了注释,以[希望]将来保护它。

抱歉这个错误。

答案 1 :(得分:2)

这个link非常有用,请查看有关使用(foreignAutoCreate = true)的说明:

  1. (foreignAutoCreate = true)仅在未根据ORMlite文档http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/field/DatabaseField.html

    设置ID字段(null或0)时起作用

    foreignAutoCreate:“将此设置为true(默认为false),以便在未设置ID字段(null或0)的情况下使用其内部DAO自动创建外部字段。”

  2. 只有根据ORMlite documentation对子表的generatedId也设置为true时,此方法才有效。