我有文章清单。 那些文章是通过使用插入的realm.copyToRealmOrUpdate();,效果很好。
realm.copyToRealmOrUpdate();
现在,每篇文章都有一个authorId,不应保留它。而是我想找到存储的作者RealmObject并为文章设置其关系。
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst(); article.setAuthor(author);
某种程度上,这似乎并不是领域所坚持的。
这同样适用于图像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();
如果您需要更多信息,请告诉我。 谢谢。
来自Realm的基督徒。您将继续操作刚刚复制到Realm的独立对象,因为它们仍然是独立对象,而不是“适当”的Realm对象,因此将无法使用。您可以在此处了解更多信息: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); } } } });