我正在使用ORMLite 4.42来购买Android应用.我有一个有外国领域的实体.这些字段也有外国字段.问题是,当我获得根实体的元素时,只加载第一级外部字段.其他级别为空.
在数据库上每一个似乎都可以.id是正确的.有帮助吗?
高配车型编辑.
我通过ID查询设备模型始终为空.但是,如果我查询整个表格,那么它可以让我访问所有内容.
@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;
Run Code Online (Sandbox Code Playgroud)
@DatabaseField(generatedId=true)
private UUID id;
@DatabaseField(canBeNull=false, unique=true)
private String serial;
@DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=false)
private EquipmentTypeEntity type;
Run Code Online (Sandbox Code Playgroud)
@DatabaseField(generatedId=true)
private UUID id;
@DatabaseField(canBeNull=true)
private String type;
@DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=false)
private EquipmentModelEntity model;
Run Code Online (Sandbox Code Playgroud)
@DatabaseField(generatedId=true)
private UUID id;
@DatabaseField(canBeNull=false)
private String model;
Run Code Online (Sandbox Code Playgroud)
Gra*_*ray 25
我正在使用ORMLite 4.42来购买Android应用.我有一个有外国领域的实体.这些字段也有外国字段.问题是,当我获得根实体的元素时,只加载第一级外部字段.其他级别为空.
对,这是设计的. ORMLite专门限制自动刷新子元素的次数.这样做是为了防止吞噬记忆和反对自我参照物体的巨大物体树.
注意:为了防止递归,有几个地方被自动刷新受到限制.如果要自动刷新一个本身具有foreignAutoRefresh设置为true的字段的类,或者如果要自动刷新具有外部集合的类,则在这两种情况下,结果字段将设置为null并且不会自动刷新.如果需要,您可以直接在该字段上调用刷新.
注意:如果您有一个自动刷新字段是一个也具有自动刷新字段的对象,您可能需要调整maxForeignAutoRefreshLevel值.见下文.
引用文档maxForeignAutoRefreshLevel:
这可用于设置配置外部对象的最大级别数.例如,如果您的问题具有最佳答案的外部字段,并且答案具有相应问题的外部字段,则来回的配置可能会变大.当您查找可能导致无限循环的问题时,这尤其是自动刷新字段的问题.默认情况下,ORMLite仅通过2个级别,但您可以将其降低为1(0无效)或增加它.数字越大,加载问题时发生的数据库事务就越多.
如果你增加maxForeignAutoRefreshLevel更多,那么它将发出额外的查询来刷新元素.
@DatabaseField(foreign=true, foreignAutoRefresh=true, canBeNull=true,
maxForeignAutoRefreshLevel=3)
private EquipmentEntity equipment;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8973 次 |
| 最近记录: |