RealmObject 中的 RealList 不会自动加载
RealList in RealmObject not automatically loaded
我遇到了以下问题:
这是 ProjectInfo
的 class
public class ProjectInfo extends RealmObject
{
@Getter @Setter @PrimaryKey private long projectId;
@Getter @Setter RealmList<Submission> submissions;
}
这是 Submission
的 class
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;
我是否必须做一些特殊的事情才能自动从其他表加载引用?
我使用的是realm版本
classpath 'io.realm:realm-gradle-plugin:2.1.1'
@Getter 和@Setter 来自 projectLombok。
更新 1
调试时,我在 ProjectInfoRealmProxy
class 中看到一个名为 sumbissionsRealmList
的成员,它具有正确的值。但是它们没有写入 submissions
成员。这是什么原因?
当然不是。 RealmProxy 中的所有字段都是延迟加载的。您通过 getSubmissions()
获取列表,这将 return 包含元素代理的列表。这些字段本身只是为了提供底层 Realm 模式(并为它们加载非托管对象的数据,当您调用 insertOrUpdate
或 copyToRealmOrUpdate
时,Realm 会使用这些数据来填充底层 Realm)
但这在文档中都提到了:
我遇到了以下问题:
这是 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;
我是否必须做一些特殊的事情才能自动从其他表加载引用?
我使用的是realm版本
classpath 'io.realm:realm-gradle-plugin:2.1.1'
@Getter 和@Setter 来自 projectLombok。
更新 1
调试时,我在 ProjectInfoRealmProxy
class 中看到一个名为 sumbissionsRealmList
的成员,它具有正确的值。但是它们没有写入 submissions
成员。这是什么原因?
当然不是。 RealmProxy 中的所有字段都是延迟加载的。您通过 getSubmissions()
获取列表,这将 return 包含元素代理的列表。这些字段本身只是为了提供底层 Realm 模式(并为它们加载非托管对象的数据,当您调用 insertOrUpdate
或 copyToRealmOrUpdate
时,Realm 会使用这些数据来填充底层 Realm)
但这在文档中都提到了: