Android 领域查询逆关系

Android Realm query inverse relationship

使用 Realm 文档中的 Person -> Dogs 示例,我如何获得没有主人的所有 Dogs?

class Person extends RealmObject {
    // ...
    private RealmList<Dog> dogs;
}

class Dog extends RealmObject {
    // ...
    @LinkingObjects("dogs")
    private final RealmResults<Person> owners = null;
}

根据这里的教程Queries,你可以这样查询Realm DB中的记录

// Build the query looking at all users:
RealmQuery<User> query = realm.where(User.class);

// Add query conditions:
query.equalTo("name", "John");
query.or().equalTo("name", "Peter");

// Execute the query:
RealmResults<User> result1 = query.findAll();

// Or alternatively do the same all at once (the "Fluent interface"):
RealmResults<User> result2 = realm.where(User.class)
                                  .equalTo("name", "John")
                                  .or()
                                  .equalTo("name", "Peter")
                                  .findAll();

您可以循环遍历结果 1 以查找主人为空的狗,或者设置查询以查找主人为空的狗。

例如这样:

RealmResults<User> result2 = realm.where(Dog.class)
                                  .isNotEmpty("owners")
                                  .findAll();