领域与列表查询

我正在使用领域在Android上存储我的数据。 真棒框架! 现在我唯一的问题是:

我有我的数据库中的国家的ID的数组列表string。

现在我找回包含与国家关系的饮料。

有没有办法,我可以做这样的查询:

String [] ids; realm.where(Drinks.class).equalsTo("country.id", ids); 

类似的东西?

或者我真的需要做一个查询,让我所有的饮料,然后手动过滤列表?

编辑:

我的课程:

 public class Drinks extends RealmObject { @PrimaryKey private String id; private String name; private Country country; } public class Country extends RealmObject { @PrimaryKey private String id; private String name; } 

Solutions Collecting From Web of "领域与列表查询"

你想要做的是理论上的链接查询(search"country.id" ),但是链接查询很慢。 你也需要将一堆or()谓词连接在一起,而且我不会冒险用链接查询。

我会build议使用以下内容

 public class Drinks extends RealmObject { @PrimaryKey private String id; private String name; private Country country; @Index private String countryId; } public class Country extends RealmObject { @PrimaryKey private String id; private String name; } 

当你在课堂上设置Country时,你也可以将countryId设置为country.getId()

一旦你这样做,你可以构build这样的:

 RealmQuery<Drinks> drinkQuery = realm.where(Drinks.class); int i = 0; for(String id : ids) { if(i != 0) { drinkQuery = drinkQuery.or(); } drinkQuery = drinkQuery.equalTo("countryId", id); i++; } return drinkQuery.findAll(); 

由于Realm数据库已经添加了版本1.2.0的 RealmQuery.in()

我build议使用这样的东西。

 //Drinks public class Drinks extends RealmObject { @PrimaryKey private String id; private String name; private String countryId; //getter and setter methods } //Country public class Country extends RealmObject { @PrimaryKey private String id; private String name; //getter and setter methods } 

在活动/片段中使用的代码来检索饮料列表

 String[] countryIdArray = new String[] {"1","2","3"} //your string array RealmQuery<Drinks> realmQuery = realm.where(Drinks.class) .in("countryId",countryIdArray); RealmResults<Drinks> drinkList = realmQuery.findAll();