java - Realm java查询条件

标签 java realm

假设下一种情况:

//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/

相关文章:

java - Realm findFirst() 方法返回 null

swift - 按另一个表中的属性总和排序的 Realm

java - 按下 JComponent 时触发 MouseListener,即使它是由 AffineTransform 转换的

java - 选择语言 Groovy 与 Java 的标准是什么?

android - Realm Kotlin 不在架构中

ios - 无法在 Realm 数据库中插入第二条记录

ios - 细粒度通知旧/新 RLMResults

java - AWS ProfileCredentialsProvider 无法获取凭证

Java删除包含换行符的字符串

java - 在 JFrame 上画线时出现问题