假设下一种情况:
//I don't put the getters and setters, but assume they are there
public class User extends RealmObject {
private RealmList<Dog> dogs;
}
public class Dog extends RealmObject {
//UPDATE: I've added the variable city, to make my question more exact
private String city;
private String color;
private String name;
}
假设: 人 1 有狗:NY-white-Joe Person 2 has dogs: NY-brown-Mary, SF-white-Fluffy, LA-brown-Fluffy Person 3 has dogs: NY-brown-Fluffy, LA-white-Pepito
问题:如何查询所有拥有一只名叫Fluffy的棕色狗的人?
我尝试使用隐式 AND 的结果:
RealmQuery<User> userQuery = realm.where(User.class).equalTo("dogs.color", "brown").equalTo("dogs.name", "Fluffy");
然后我阅读了文档并且分别评估了两个 equalTo() 条件,这意味着我将拥有:
所有拥有一只棕色狗和一只名为 Fluffy 的狗的用户。 (所以结果是P2,P3)。
我应该如何编写此查询以将条件应用于同一只狗?
最佳答案
在我看来最好的方法是使用主键查询。我的意思是首先将主键添加到 Dog
类:
class Dog extends RealmObject {
@PrimaryKey
private int id;
private String color;
private String name;
}
然后要找到拥有一只名为 Fluffy 的棕色狗的用户,第一步是找到这样一只狗的主键。所以我们进行查询以找到确切的 Dog
:
Dog dog = realm.where(Dog.class).equalTo("color", "brown").equalTo("name", "Fluffy").findFirst();
之后我们搜索拥有定义主键(id 字段)的狗的用户:
RealmResults<User> users = realm.where(User.class).equalTo("dogs.id", dog.getId()).findAll();
关于java - Realm java查询条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733955/