RealmObject中的RealList未自动加载

时间:2016-11-16 15:08:46

标签: java android realm realm-list

我遇到以下问题:

这是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。

UPDATE1

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

1 个答案:

答案 0 :(得分:4)

当然不是。 RealmProxy中的所有字段都是延迟加载的。您可以通过getSubmissions()获取列表,该列表将返回包含元素代理的列表。字段本身只是提供底层的Realm架构(并为它们加载非托管对象的数据,当您调用insertOrUpdatecopyToRealmOrUpdate时,Realm用它来填充底层Realm)

但是文档中都提到了这一点:

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