具有嵌套对象的领域deleteAllFromRealm

时间:2017-11-30 09:42:34

标签: java android database realm

我有一个主对象及其嵌套对象,这些对象都是从RealmObject扩展而来的。 我在使用主对象之前存储所有嵌套对象。

使用这些嵌套对象删除主对象后,我注意到嵌套对象仍然存储,但无法通过' equalTo()'使用主键进行选择。方法

我用

过滤nObject2
realm.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
}

1 个答案:

答案 0 :(得分:0)

nObject2nObject1的{​​{1}}字段中创建了一个链接查询。这意味着您正在寻找Oid的{​​{1}}。

如果nObject1 nObject1被删除,那么很明显它无法找到。

如果您尝试使用自己的Oid查找nObject2,那么您应该使用Oid

如果您尝试使用.equalTo("Oid" nObject2查找nObject1即使Oid被单独删除,那么也将该oid存储为nObject1的一部分{ {1}}在其架构中,例如nObject2,并基于此进行查询。