Android领域查询关系

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

   @PrimaryKey
    private int id;
    private String title;    
    private RealmList<Task> tasks;

我在这里是Task Realm对象

   @PrimaryKey
    private int id;
    private String title; 
    private boolean completed;
    private TodoList todoList;

我的问题是什么是编写Realm查询的最佳方法,该查询返回属于特定TodoList的任务列表.这是我的方法.

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

这种方法要求我查询Task表,查找匹配给定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;

    }

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

解决方法:

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

这两种方法都很好.你可以通过realmList.where().findAll()将RealmList实际转换为RealmResults.

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

上一篇:在Android项目中升级领域


下一篇:javascript – 在react-native域中存储数组