Android Realm 查询关系

Val*_*for 5 android realm

我有一个名为 TodoList 的 Realm 对象,它具有这样的 RealmList 属性。

   @PrimaryKey
    private int id;
    private String title;    
    private RealmList<Task> tasks;
Run Code Online (Sandbox Code Playgroud)

我这里是任务领域对象

   @PrimaryKey
    private int id;
    private String title; 
    private boolean completed;
    private TodoList todoList;
Run Code Online (Sandbox Code Playgroud)

我的问题是编写返回属于特定 TodoList 的任务列表的领域查询的最佳方法是什么。这是我的方法。

public RealmResults<Task> getTodoListTasks(int todoListId) {
        RealmResults<Task> tasks = mRealm.where(Task.class)
                .equalTo("todoList.id", todoListId).findAll();
        return tasks;
}
Run Code Online (Sandbox Code Playgroud)

这种方法要求我查询任务表,查找与给定 id 匹配的所有 TodoList 外键。我希望得到这样的东西:

 public RealmResults<Task> getTodoListTasks2(TodoList list) {
        TodoList todoList =  mRealm.where(TodoList.class).equalTo("id", list.getId()).findFirst();
        RealmResults<Task> tasks = todoList.getTasks();
        return tasks;

    }
Run Code Online (Sandbox Code Playgroud)

但是,这不会构建,因为我无法将 RealmList 转换为 RealmResult。

bee*_*der 4

使用反向链接查询会容易得多,但不幸的是它尚未实现(2016 年 3 月 18 日),请参阅http://github.com/realm/realm-java/issues/607。

这两种方法都很好。您实际上可以将 a 转换RealmList为RealmResultsby realmList.where().findAll()。

RealmCollection最近将添加另一个更好的抽象对象以更好地支持此用例,请参阅http://github.com/realm/realm-java/pull/2345。