【问题标题】:Find all child realm objects where the parent's id is X查找父级 id 为 X 的所有子域对象
【发布时间】:2016-04-29 12:58:45
【问题描述】:

在这个example 中,文档谈到了在为子对象指定查询的同时获取父对象。

有没有办法在为父对象指定查询的同时获取子对象?

在给定的示例中,我可以使用名为 John 的用户搜索棕色的狗吗?

【问题讨论】:

    标签: android realm realm-list


    【解决方案1】:

    编辑: 从 Realm 3.5.0 开始,您实际上可以使用评论部分中提到的“反向链接”。高兴!

    其实从 Realm 3.0.0 开始,双向链接是性能瓶颈,所以使用反向链接是首选方式。

    它的工作方式是:

    public class User extends RealmObject {
        private RealmList<Dog> dogs;
    }
    
    public class Dog extends RealmObject {
        @LinkingObjects("dogs")
        private final RealmResults<User> owners = null;
    }
    

    现在你可以这样做了:

    realm.where(Dog.class).equalTo("color", "Brown").equalTo("owners.name", "John").findAll();
    

    旧答案:

    如果您有指向该用户的对象链接,则您只能使用给定的用户搜索 dogs

    public class Dog extends RealmObject {
        //...
        private User user;
    }
    

    那你就可以了

    realm.where(Dog.class).equalTo("color", "Brown").equalTo("user.name", "John").findAll();
    

    【讨论】:

    • 以上是正确的。现在您必须手动维护该引用,但我们的 TODO 中有一个称为反向链接的概念,这将使这更容易做到:github.com/realm/realm-java/issues/607
    • 不过是P2的,所以暂时还是这样吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多