我有一个主对象及其嵌套对象,这些对象都是从RealmObject扩展而来的。 我在使用主对象之前存储所有嵌套对象。
使用这些嵌套对象删除主对象后,我注意到嵌套对象仍然存储,但无法通过' equalTo()'使用主键进行选择。方法
我用
过滤nObject2realm.where(nObject2.class).equalTo("nObject1.Oid",givenOid).findAll()
作为用户选择的RealmResults。如果尚未删除任何mObject,则结果是正确的。但是如果删除了mObject,则下次在给定nObject1.Oid
的结果中未列出相关的nObject2。
我通过copyToRealmOrUpdate()
或insertOrUpdate()
存储了所有这些对象,并且未通过mObject RealmResults.deleteAllFromRealm()
进行任何更改和删除
嵌套Object1;
public class nObject1 extends RealmObject implements Serializable {
private Date LastModifiedOn;
private String LastModifiedBy;
private Date CreatedOn;
private String CreatedBy;
@PrimaryKey
private String Oid;
//getters and setters
}
嵌套Object2;
public class nObject2 extends RealmObject implements Serializable {
private nObject1 nObject1;
private Date LastModifiedOn;
private String LastModifiedBy;
private Date CreatedOn;
private String CreatedBy;
@PrimaryKey
private String Oid;
//getters and setters
}
和主对象;
public class mObject extends RealmObject implements Serializable {
private nObject1 nObject1;
private nObject2 nObject2;
private Date LastModifiedOn;
private String LastModifiedBy;
private Date CreatedOn;
private String CreatedBy;
@PrimaryKey
private String Oid;
//getters and setters
}
答案 0 :(得分:0)
nObject2
在nObject1
的{{1}}字段中创建了一个链接查询。这意味着您正在寻找Oid
的{{1}}。
如果nObject1
nObject1
被删除,那么很明显它无法找到。
如果您尝试使用自己的Oid
查找nObject2
,那么您应该使用Oid
。
如果您尝试使用.equalTo("Oid"
nObject2
查找nObject1
即使Oid
被单独删除,那么也将该oid存储为nObject1
的一部分{ {1}}在其架构中,例如nObject2
,并基于此进行查询。