在我的项目中,我已经缓存了外部注释,并且手动插入和删除了级联,但我现在正在尝试更新我的代码以使用新的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;
有什么想法吗?
答案 0 :(得分:3)
不幸的是,使用foreignAutoRefresh
未正确配置version
字段(以及DatabaseFieldConfigLoader
) - 用于读取和写入类配置。我已打开this bug并将其固定在行李箱中。该修补程序已添加到版本4.30中的ORMLite。
我已经在@DatabaseField的末尾添加了注释,以[希望]将来保护它。
抱歉这个错误。
答案 1 :(得分:2)
这个link非常有用,请查看有关使用(foreignAutoCreate = true)的说明:
(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自动创建外部字段。”
只有根据ORMlite documentation对子表的generatedId也设置为true时,此方法才有效。