我有一个主对象及其嵌套对象,这些对象都从 RealmObject 扩展。 在使用主对象之前,我存储所有嵌套对象。
删除包含这些嵌套对象的主对象后,我注意到嵌套对象仍然被存储,但无法通过“equalTo()”方法使用其主键进行选择。
我用
过滤 nObject2realm.where(nObject2.class).equalTo("nObject1.Oid",givenOid).findAll()
作为用户选择的 RealmResults。如果尚未删除任何 mObject,则结果是正确的。但是,如果删除了 mObject,则下次给定 nObject1.Oid
的结果中不会列出相关的 nObject2。
我通过 copyToRealmOrUpdate()
或 insertOrUpdate()
存储了所有这些对象,并且没有任何更改,并通过 mObject RealmResults.deleteAllFromRealm()
删除了所有对象
嵌套对象1;
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
}
嵌套对象2;
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
}
最佳答案
"nObject1.Oid"
在 nObject2
的 nObject1
字段中创建链接查询。这意味着您正在寻找 nObject1
的 Oid
。
如果删除带有Oid
的nObject1
,那么显然不会找到它。
如果您尝试使用自己的 Oid
查找 nObject2
,那么您应该使用 .equalTo("Oid"
。
如果您尝试使用 nObject1
的 Oid
查找 nObject2
,即使 nObject1
已单独删除,也要将该 oid 作为 nObject2
的一部分存储在其架构中,例如 @Index private String nObject1Oid
并基于此进行查询。
关于java - 带有嵌套对象的 Realm deleteAllFromRealm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47570242/