领域:通过3个模型获取对象集合

时间:2017-05-09 08:57:48

标签: java android realm

我正在尝试通过关系找到3个模型中的所有行。

用户1-M日 第1天M赛事

class User extends RealmObject {
    String id;
    RealmList<Day> days;
}
class Day extends RealmObject {
    String id;
    RealmList<Event> events;
}
class Event extends RealmObject {
    String id;
    String issueId;
}

我想通过issueId为当前用户获取所有事件;

例如:为id = 1的用户查找issueId =“TZB-1”的所有事件

我坚持这个:

User realmUser = mRealm.where(User.class).equalTo("id", userId).findFirst();
RealmList<Week> realmWeeks = realmUser.getWeeks();

我不想每周都检查一下。有没有办法在没有循环的情况下查找选定周的事件?

在SQL中它将是这样的:

select events.*
from users
left join days on users.id = days.user_id
left join events on days.id = events.day_id
where users.id = 1
and events.issue_id = "TZB-1"

更新1
作为临时解决方案,我发现了下一个例子:
手动跟踪用户模型的反向链接,如

class Event extends RealmObject {
        String id;
        String issueId;
        User user;
}

允许以这种方式获取所有事件:

RealmResults<Event> events = realm.where(Event.class).equalTo("user.id", userId).equalTo("issueId", issueId).findAll();

但是这个解决方案让我改变了很多代码。

0 个答案:

没有答案
相关问题