查找Realm DB中的所有课程? (爪哇/ Android装置)

时间:2015-06-08 13:54:51

标签: java android realm

有没有办法找到Realm DB中存在的所有类?

示例,假设您有一个存在Dogs,Cats和Birds的Realm数据库。他们都有名称属性。

您想要搜索名称为" Joe"。

的任何对象

Obv你可以说

realm.Where(Dog.class).Contains()

但你能动态地做到吗?

类似的东西:

realm = Realm.getInstance();
List<?> realmObjects = realm.GetAllClassesThatExtendRealmObject();
for(Object obj : realmObjects)
{
    //search or what not here
} 

由于

1 个答案:

答案 0 :(得分:0)

遗憾的是,Realm无法实现这一点,因为所有查询结果必须属于同一类型。你最好的选择是保留一个RealmTypes列表,然后让它们全部实现这样的界面

public interface Named {
  public String getName();
  public void setName(String name);
}

public class Foo extends RealmObject implements Named {
  private String name;
  ...
}

public class Bar extends RealmObject implements Named {

}

List<Class<? extends RealmObject?>> types = Arrays.asList(Foo.class, Bar.class);
List<Named> namedResults = new ArrayList<>();
for (Class type : types) {
  List<Named> results = (List<Named>) realm.where(type).equalTo("name", "Joe");
  namedResults.addAll(results);
}

但是这样做意味着你失去了Realm的一个主要好处,即RealmResults是延迟加载的。