保存领域关系不会持久化它们
Saving realm relationships does not persist them
我有一个列表 articles。
这些文章是使用 realm.copyToRealmOrUpdate();
插入的,效果非常好。
现在每篇文章都有一个 authorId 不应该被持久化。相反,我想找到存储的 author RealmObject 并设置它与文章的关系。
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);
不知何故这似乎并没有被 realm 坚持。
同样适用于 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();
如果您需要更多信息,请告诉我。
谢谢。
您在使用 GSON 吗?如果是,您是否遵循了 http://realm.io/docs/java/0.80.0/#gson 中概述的示例?
这里是 Realm 的基督徒。您继续操作刚刚复制到 Realm 的独立对象,这将不起作用,因为它们仍然是独立对象而不是 "proper" Realm 对象。您可以在这里阅读更多内容:http://realm.io/docs/java/0.80.0/#creating-objects and in the 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);
}
}
}
});
我有一个列表 articles。
这些文章是使用 realm.copyToRealmOrUpdate();
插入的,效果非常好。
现在每篇文章都有一个 authorId 不应该被持久化。相反,我想找到存储的 author RealmObject 并设置它与文章的关系。
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);
不知何故这似乎并没有被 realm 坚持。
同样适用于 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();
如果您需要更多信息,请告诉我。
谢谢。
您在使用 GSON 吗?如果是,您是否遵循了 http://realm.io/docs/java/0.80.0/#gson 中概述的示例?
这里是 Realm 的基督徒。您继续操作刚刚复制到 Realm 的独立对象,这将不起作用,因为它们仍然是独立对象而不是 "proper" Realm 对象。您可以在这里阅读更多内容:http://realm.io/docs/java/0.80.0/#creating-objects and in the 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);
}
}
}
});