1

在我的项目中,我缓存了外部注释并手动进行了所有插入和删除级联,但我现在正在尝试更新我的代码以使用新的 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;

有任何想法吗?

4

2 回答 2

3

不幸的是,该foreignAutoRefresh字段(以及version)没有正确配置DatabaseFieldConfigLoader-- 用于读取和写入类配置。我已经打开了这个错误并将其修复在后备箱中。该修复程序在 4.30 版中添加到ORMLite

我在@DatabaseField 的末尾添加了注释,以[希望] 将来避免这种情况。

对不起这个错误。

于 2011-11-04T18:21:44.583 回答
2

链接将非常有用,请检查使用 (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 文档将子表的 generatedId 也设置为 true 的情况。

于 2013-10-12T22:09:55.647 回答