1

我有以下问题:

这是课程ProjectInfo

public class ProjectInfo extends RealmObject
{
    @Getter @Setter @PrimaryKey private long          projectId;
    @Getter @Setter             RealmList<Submission> submissions;
}

这是课程Submission

public class Submission extends RealmObject
{
    @Getter @Setter @PrimaryKey long    id;
    @Getter @Setter             Date    creationDate;

    public Submission() {}

}

当我创建对象并保存到领域数据库时,从 ProjectInfo 到 Submission 的引用在列中显示如下

class_Submission{0,1,2,3}

这看起来是对的。

但是现在当我加载 projectInfo 对象时

ProjectInfo projectInfo = realm.where(ProjectInfo.class).equalTo("projectId", projectId).findFirst();

projectInfo.submissions == null;

我必须做一些特别的事情来自动加载来自其他表的引用吗?

我正在使用领域版本

classpath 'io.realm:realm-gradle-plugin:2.1.1'

@Getter 和 @Setter 来自 projectLombok。

更新1

在调试时,我看到类中调用的成员sumbissionsRealmList具有ProjectInfoRealmProxy正确的值。但它们不会写入submissions成员中。是什么原因?

4

1 回答 1

5

当然不是。RealmProxy 中的所有字段都是延迟加载的。您通过 获取列表getSubmissions(),它将返回包含元素代理的列表。字段本身只是为了提供底层 Realm 模式(并为它们加载非托管对象的数据,当您调用insertOrUpdate或时,Realm 使用这些数据填充底层 Realm copyToRealmOrUpdate

但这在文档中都提到了:

https://realm.io/docs/java/latest/#android-studio-debugging

于 2016-11-16T16:16:05.870 回答