Java 领域:如何在一对多关系中仅查询父亲的对象
我有以下问题:Java 领域:如何在一对多关系中仅查询父亲的对象,java,android,realm,Java,Android,Realm,我有以下问题: Father包含一个RealmList(其中Kid是另一个RealmObject) 我想通过以下方式查询属于父亲的所有孩子的列表,而不必查询父亲本身: Realm.getDefaultInstance().where(Kid.class).equalTo("fatherId", id); 但我很确定这是不可能的,因为Kid与Father没有任何关系 我是否必须查询父对象,然后调用getKids()方法 如果你想知道为什么我不是简单地查询父亲:我有一个通用的查询方法,查询给它的任
Father
包含一个RealmList
(其中Kid
是另一个RealmObject)
我想通过以下方式查询属于父亲
的所有孩子
的列表,而不必查询父亲
本身:
Realm.getDefaultInstance().where(Kid.class).equalTo("fatherId", id);
但我很确定这是不可能的,因为Kid
与Father
没有任何关系
我是否必须查询父对象,然后调用getKids()
方法
如果你想知道为什么我不是简单地查询父亲:我有一个通用的查询方法,查询给它的任何类:
public <T extends RealmObject> List<T> getForFather(Class<T> clazz, String fatherId)
公共列表getForFather(类clazz,字符串fatherId)
查询的大多数类都属于父类,我希望避免if-else语句。我还希望避免多个方法做同一件事,只使用另一个类。上述通用方法可行,但前提是,如果有一种方法可以查询您案例中特定父亲的孩子,
您必须使用为数据库设计ER的传统方法
就是,
不要在父对象中使用RealmList
,而是在父对象中创建一个primaryKey
,并在子对象中引用该主键fatherPrimaryKey
然后您可以简单地查询
RealmResults<Kid> result = realm.where(Kid.class).equals("fatherPrimaryKey", "some_key").findAll();
RealmResults result=realm.where(Kid.class).equals(“父主密钥”、“某个密钥”).findAll();
在kid对象中存储数据时,请确保将父亲主键的正确值作为参考传递给孩子。对于您的情况,
您必须使用为数据库设计ER的传统方法
就是,
不要在父对象中使用RealmList
,而是在父对象中创建一个primaryKey
,并在子对象中引用该主键fatherPrimaryKey
然后您可以简单地查询
RealmResults<Kid> result = realm.where(Kid.class).equals("fatherPrimaryKey", "some_key").findAll();
RealmResults result=realm.where(Kid.class).equals(“父主密钥”、“某个密钥”).findAll();
在kid对象中存储数据时,请确保将父亲主键的正确值作为参考传递给孩子。这实际上太麻烦了,无法跟踪。我想我只需要查询用户并调用必要的getter。但是谢谢你的回答。:)另一方面:有没有一种方法可以使用“中间”过滤器过滤RealmList?这实际上太麻烦了,无法跟踪。我想我只需要查询用户并调用必要的getter。但是谢谢你的回答。:)旁注:有没有一种方法可以使用“中间”过滤器过滤RealmList?这只是一个示例,我确实创建了局部变量,但感谢提示。这只是一个示例,我确实创建了局部变量,但感谢提示。