我有一份articles的清单
使用realm.copyToRealmOrUpdate();
插入这些文章,效果非常好。
现在每篇文章都有一个不应该保留的authorId。相反,我想找到存储的author RealmObject并设置它与文章的关系。
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);
以某种方式,这似乎并没有被领域持续存在。
这同样适用于image RealmObject,只是我在保存前进行迭代。
这是完整的代码段。
realm.beginTransaction();
realm.copyToRealmOrUpdate(articles.data);
for(Article article : articles.data) {
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);
for (Image image : article.getSerializedImages().data) {
if (article.getImages() == null) {
article.setImages(new RealmList<Image>());
}
article.getImages().add(image);
}
}
realm.commitTransaction();
如果您需要更多信息,请与我们联系 感谢。
答案 0 :(得分:1)
来自境界的克里斯蒂安。你一直在操纵你刚刚复制到Realm的独立对象,它们不会工作,因为它们仍然是独立的对象,而不是&#34;正确的&#34;领域对象。您可以在此处阅读更多内容:http://realm.io/docs/java/0.80.0/#creating-objects和JavaDoc http://realm.io/docs/java/0.80.0/api/io/realm/Realm.html#copyToRealm-E-
因此,如果您将代码更改为类似下面的代码,它应该可以工作:
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
List<Article> realmArticles = realm.copyToRealmOrUpdate(articles.data);
for(Article article : realmArticles) {
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);
for (Image image : article.getSerializedImages().data) {
article.getImages().add(image);
}
}
}
});
答案 1 :(得分:0)
您使用的是GSON吗?如果是,您是否按照http://realm.io/docs/java/0.80.0/#gson中列出的示例进行了操作?