2016-10-04 81 views
0

我想建立在境界(JAVA)的查詢滿足該條件:境界收集查詢

class Book extends RealmObject { 

    public RealmList<Tag> tags; 

    public int fileType; 

    public String title; 
} 

class Tag extends RealmObject { 

    public Book book; 

    public int type; 

    public String name; 
} 
: 所有具有X型和名稱,如Y. 這裏我的境界類標籤的書籍

我必須使用基於圖書的查詢,所以查詢必須開始像這樣:

realm.where(Book.class) 

但我想我不能建立查詢。 我嘗試這樣做:

realm.where(Book.class) 
    .equalTo("tags.type", X) 
    .contains("tags.name", Y) 
    .findAll(); 

這意味着查詢書,任何的它的tags.type等於X和任何它的tags.name包含Y.

但我想這兩個條件適用於同一個標籤對象。

我該怎麼做?

謝謝。

+0

喜hojjat。你能用另一種方式解釋問題嗎?無法弄清楚你正在尋找什麼。 Ur當前查詢,據我所知將返回所有書籍的標籤類型爲X或包含名稱Y的書籍。 – vishnus

+0

通過將兩個條件應用於同一個標籤對象,你的意思是什麼? – vishnus

+0

嗨vishnus。感謝您的回覆。我的查詢返回標籤類型爲X或標籤名稱包含Y的所有書籍。假設我有一本有兩個標籤的書籍。第一個標籤是這樣的{type = X,name =「test」}和第二個:{type = Z,name =「Y」}。這個查詢返回這本書,但它不是我想要的。我想這兩個條件適用於相同的標籤。 – Hojjat

回答

3

鏈接查詢可以是一個有點難以繞到你的頭,但我們有一個解釋這裏一個完整的例子:你需要把它改寫成這個https://realm.io/docs/java/latest/#link-queries

你的情況:

realm.where(Book.class) 
    .equalTo("tags.type", X) 
    .findAll().where() 
    .contains("tags.name", Y) 
    .findAll(); 
+0

謝謝你基督徒。這解決了我所說的問題。但是我有另一個必須應用的條件,所以我必須在beginGroup()和endGroup中包裝每個條件組。但顯然我應該在findAll方法之前關閉組。你能爲此提供解決方案嗎? – Hojjat

+0

我並不完全相信我理解這個問題,但是如果和'beginGroup'必須與'endGroup'匹配才能成爲有效的查詢。 –

+0

我必須在findAll方法之後調用endGroup,因爲我有另外一個必須像這樣應用的條件:realm.where(Book.class).beginGroup().... findAll()。endGroup() – Hojjat