领域:如何仅以一对多的关系查询父亲的对象

时间:2016-09-22 08:44:27

标签: java android realm

我有以下问题:

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

1 个答案:

答案 0 :(得分:2)

对于你的情况, 你必须使用传统的方法来设计数据库的ER。

即 而不是在RealmList<Kid>对象中fatherprimaryKey中创建father,并在子fatherPrimaryKey中引用该主键

然后你可以简单地查询

RealmResults<Kid> result = realm.where(Kid.class).equals("fatherPrimaryKey", "some_key").findAll();

在将数据存储在kid对象中时,请确保将father's primary key的正确值作为参考传递给子项。