我有以下问题:
Father
包含RealmList<Kid>
(Kid
是另一个RealmObject)
我想查询属于Kid
的所有Father
的列表,而不通过以下方式查询Father
:
Realm.getDefaultInstance().where(Kid.class).equalTo("fatherId", id);
但我很确定这是不可能的,因为Kid
没有引用Father
。
我是否必须查询Father
对象,然后调用getKids()
方法?
如果你想知道为什么我不是简单地查询Father
:我有一个查询的通用方法,查询给它的任何类:
public <T extends RealmObject> List<T> getForFather(Class<T> clazz, String fatherId)
查询的大多数类都属于Father
,我想避免使用if-else语句。我也想避免多个方法做同样的事情,只是与另一个类。以上通用方法可行,但仅限于,如果有办法查询Kid
特定Father
。
答案 0 :(得分:2)
对于你的情况, 你必须使用传统的方法来设计数据库的ER。
即
而不是在RealmList<Kid>
对象中father
在primaryKey
中创建father
,并在子fatherPrimaryKey
中引用该主键
然后你可以简单地查询
RealmResults<Kid> result = realm.where(Kid.class).equals("fatherPrimaryKey", "some_key").findAll();
在将数据存储在kid对象中时,请确保将father's primary key
的正确值作为参考传递给子项。