Reputation: 873
I have a list of articles.
Those articles are inserted by using realm.copyToRealmOrUpdate();
which works perfectly fine.
Now each article has an authorId which should not be persisted. Rather I want to find the stored author RealmObject and set its relationship for the article.
Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);
Somehow this does not seem to be persisted by realm.
The same applies to the image RealmObject, just that I iterate before saving.
Here's the full snippet.
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();
Please let me know if you need more information.
Thanks.
Upvotes: 2
Views: 2258
Reputation: 20126
Christian from Realm here. You keep manipulating the standalone objects you just copied to Realm, which won't work as they are still standalone objects and not "proper" Realm objects. You can read more here: 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-
So if you change you code to something like the below, it should work:
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);
}
}
}
});
Upvotes: 1
Reputation: 2497
Are you using GSON? If so, did you follow the example as outlined in http://realm.io/docs/java/0.80.0/#gson?
Upvotes: 0