我将使用USER解释我的问题 - > TASK(1个用户可以拥有多个任务)作为示例。
在领域,我可以定义USER ENTITY,其中包含相关任务的列表。
但是,在查询所有用户时,我还想将读取作为用户列表的一部分,每个用户的一组属性是该用户任务的等效属性的摘要。
例如,我想阅读所有用户,并且对于每个用户,如果任何链接任务未完成,则报告“未完成”。如果该用户的任何任务具有附件,则为用户报告“具有附件”。
在使用SQLLite的纯SQL中,我可以使用groupby构造实现此效果,并在结果集中派生列,这些列是实列的摘要。
如何在Realm中完成相同的操作。任何帮助表示赞赏。
示例实体:
User
{
String userId
String name
List<Task> tasks
**--> oustanding** (need to derive if any of the tasks in the task list is outstanding)
**--> hasAttachments** (if any of the tasks in the task list has
attachments)
}
Task
{
String taskId
boolean outstanding
boolean hasAttachments
}
注意:用户实体上的未完成和hasAttachments未定义必要的字段。我只需要在运行时,查询或动态字段中派生它们,如果有这样的事情
答案 0 :(得分:0)
好消息是,Realm支持“链接查询”,从技术上来说,“至少有一个X是真的”,这正是您所寻找的:
realm.where(User.class).equalTo("tasks.outstanding", true).findAll(); // users with at least 1 outstanding task
realm.where(User.class).equalTo("tasks.hasAttachments", true).findAll(); // users with at least 1 task that has attachments