首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >领域嵌套查询[Android]

问领域嵌套查询[Android]
EN

Stack Overflow用户
提问于 2017-06-04 10:32:40
回答 1查看 214关注 0票数 0

我有一个相当简单的问题,但似乎找不到答案。我有三个领域对象-月,日和目标。月份包含天数列表,而每一天包含目标列表。这是简化的版本:

代码语言:javascript
复制
class Month extends RealmObject {
    RealmList<Day> days;
}

class Day extends RealmObject {
    RealmList<Goal> goals;
}

class Goal extends RealmObject {
    //some data
}

如何查询属于特定月份的目标?

也就是说,我可以获得特定月份的天数列表,但是现在我需要从这个日期列表中提取出它们包含的所有目标,并使用一个查询。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-06 08:59:56

你可以利用逆关系:

模型的外观如下:

代码语言:javascript
复制
class Month extends RealmObject {
    String name;
    RealmList<Day> days; 
}

class Day extends RealmObject {
    String name;
    RealmList<Goal> goals; 

    @LinkingObjects("days")
    final RealmResults<Month> month = null;
}

class Goal extends RealmObject {
    String name;

    @LinkingObjects("goals")
    final RealmResults<Day> day = null;
}

查询将非常简单,如:

代码语言:javascript
复制
RealmResults<Goal> = realm
    .where(Goal.class)
    .equalTo("day.month.name", "august")
    .findAll();

如果您有100个月,每个有100天,每个目标都有100个目标(总计100万个目标),那么您的查询将在约300 ms和约900 ms内使用OrmLite (SQLite ORM)执行。我在OnePlus 3T上测试了这个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44353087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档