java - 带有嵌套对象的 Realm deleteAllFromRealm

标签 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() 删除了所有对象

嵌套对象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"nObject2nObject1 字段中创建链接查询。这意味着您正在寻找 nObject1Oid

如果删除带有OidnObject1,那么显然不会找到它。

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

如果您尝试使用 nObject1Oid 查找 nObject2,即使 nObject1 已单独删除,也要将该 oid 作为 nObject2 的一部分存储在其架构中,例如 @Index private String nObject1Oid 并基于此进行查询。

关于java - 带有嵌套对象的 Realm deleteAllFromRealm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47570242/

相关文章:

java - Google Guava Cache,刷新过期超时

java - Android:AsyncTask 或带有 ExecutorService 的普通 Java 线程

mysql - 重叠的时间间隔

php - 如何在数据库中查找与输入字符串最相似的字符串

java - 无法在自定义登录模块中注入(inject) dao

java - 以编程方式确定我的盒子上安装了哪些 JDK/JRE

java - 在驱动器号后添加冒号到文件路径(即 : change/c/or c/to c:/) in Java

android - 如何模拟后退按钮单击

android - 如何在库模块中的代码中获取主要的applicationId?

database - 如何使用 DynamoDB (NoSQL) 为学生/类(class)建模