2015-09-23 80 views
5

假設未來情況:領域的Java查詢條件

//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-白喬 人2有狗:NY-棕瑪麗,SF-白色蓬鬆, LA-brown-Fluffy 人3有狗:NY-brown-Fluffy,LA-white-Pepito

問題:我如何查詢所有有褐色狗稱爲毛茸茸的人?

我所使用的隱式和嘗試:

RealmQuery<User> userQuery = realm.where(User.class).equalTo("dogs.color", "brown").equalTo("dogs.name", "Fluffy"); 

然後,我已經閱讀文檔和兩個equalTo()的條件分別進行評估,這意味着我將有:

所有有一隻棕色狗和一隻叫做毛茸茸的狗的用戶。 (所以結果是P2,P3)。

我應該如何編寫此查詢以將條件應用於同一只狗?

回答

1

在我看來,最好的方法是使用主鍵查詢。我的意思是先加入主鍵Dog類:

class Dog extends RealmObject { 
     @PrimaryKey 
     private int id; 
     private String color; 
     private String name; 
} 

然後第一步,發現有一個叫蓬鬆的棕色狗的用戶來說,是找到這樣狗的主鍵。因此,我們作出查詢,以找到確切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(); 
+0

感謝您的回答,您指出我的問題不是確切的,我會更新我的帖子,請再次查看。再次感謝,並抱歉。 – user1915767