ORMLite不加载子外地领域

我正在使用ORMLite 4.42的Android应用程序。 我有一个有外地的实体。 这些领域也有外国领域。 问题是,当我得到一个根实体的元素,只有第一级的外国领域被加载。 其他级别为空。

在数据库中,每个似乎都没问题 该ID是正确的。 任何帮助?

用模型编辑


设备模型始终为空qhen按ID查询。 但是,如果我查询整个表,那么它使我能够访问所有的东西。

TABLE INCIDENT

@DatabaseField(generatedId=true) private UUID id; @DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=false) private UserEntity user; @DatabaseField(dataType = DataType.DATE, canBeNull=true) private Date date; @DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=true) private EquipmentEntity equipment; 

餐桌设备

 @DatabaseField(generatedId=true) private UUID id; @DatabaseField(canBeNull=false, unique=true) private String serial; @DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=false) private EquipmentTypeEntity type; 

表设备types

 @DatabaseField(generatedId=true) private UUID id; @DatabaseField(canBeNull=true) private String type; @DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=false) private EquipmentModelEntity model; 

餐桌设备模型

 @DatabaseField(generatedId=true) private UUID id; @DatabaseField(canBeNull=false) private String model; 

Solutions Collecting From Web of "ORMLite不加载子外地领域"

我正在使用ORMLite 4.42的Android应用程序。 我有一个有外地的实体。 这些领域也有外国领域。 问题是,当我得到一个根实体的元素,只有第一级的外国领域被加载。 其他级别为空。

对,这是devise。 ORMLite特别限制了它自动刷新一个子元素的次数。 这样做是为了防止巨大的物体树木吞噬记忆和反对自我指涉的物体。

引用foreignAutoRefresh的文档 :

注意:为了防止recursion,有几个地方自动刷新是有限的。 如果您自动刷新自身具有foreignAutoRefresh设置为true的字段的类,或者如果使用外部集合自动刷新类,则在这两种情况下,结果字段将设置为null,而不是自动刷新。 如果您需要,您可以直接在字段上直接调用刷新。

注:如果您有一个自动刷新字段,该字段也是一个自动刷新字段的对象,则可能需要调整maxForeignAutoRefreshLevel值。 见下文。

引用maxForeignAutoRefreshLevel的文档:

这可以用来设置configuration外来对象的最大级别数。 例如,如果您有一个具有最佳答案的外地问题,并且Answer对于相应的问题有一个外地问题,则来回configuration可能会变大。 在查找问题时,这可能会导致无限循环,这对于自动刷新字段尤其有问题。 默认情况下,ORMLite只能通过2级,但可以减less到1(0无效)或增加它。 数字越高,加载问题时发生的数据库交易越多。

如果将maxForeignAutoRefreshLevel增加到更多,则会发出额外的查询来刷新元素。

 @DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=true, maxForeignAutoRefreshLevel=3) private EquipmentEntity equipment;