4

这是我的问题:我有不同的实体链接到其他实体,嵌套深度为 3。我在每个对象中的所有外部字段都带有注释

@DatabaseField(foreign = true, foreignAutoRefresh = true)

但只有嵌套深度为 2,我才能得到实际的 autoRefreshed 异物。

例如,如果我查询 A 实体,然后执行以下操作:

A.getB().getC().getD()

对于实体 B 和 CI 已经拥有所有字段,而对于实体 DI 仅获取了 ID,我需要调用 dao.refresh() 方法才能获取所有 D 字段。这是一个限制吗?我在文档中找不到任何关于它的信息。

4

2 回答 2

5

编辑:

因此,在创建了一些更好的单元测试并对其进行了更多研究之后,结果证明这是一个错误。 ORMLite错误地处理maxForeignAutoRefreshLevel了注释中的设置@DatabaseField。现在(正如您似乎已经想通了查看您的答案),您需要在对象中的字段和对象中的字段中添加一个foreignAutoRefresh = true和。那应该解决它。maxForeignAutoRefreshLevel = 3CBDC

我创建了以下错误报告:

https://sourceforge.net/tracker/?func=detail&aid=3530801&group_id=297653&atid=1255989

我已经解决了中继中的问题,并开始推出 4.41 版。自上次发布以来已经有一段时间了,这和任何时候一样好。

于 2012-05-29T15:22:05.347 回答
3

我通过在 C 实体上添加注释属性解决了这个问题,maxForeignAutoRefreshLevel = 3现在 D 得到了刷新。

奇怪的是我不需要在 A、B 或 D 中设置 maxForeignAutoRefreshLevel。

另一个细节是,如果我将 C 实体的级别设置为 2,则 D 不再刷新。似乎 getmaxForeignAutoRefreshLevel = 3从 C 实体应用到“起始”实体,在我的情况下为 A。

于 2012-05-30T09:36:07.577 回答