我有以下類創建嵌套對象的副本:Android的境界copyToRealmOrUpdate
public class Note extends RealmObject {
@PrimaryKey
private String id;
private Template template;
// other primitive fields, getters & setters
}
public class Template extends RealmObject {
private String name;
private String color;
// other primitive fields, getters & setters
}
我從通過改造& GSON後端得到我的數據,所以我必須在響應準備使用的Java對象。
讓我們想象一下,每次我調用它時,後端都會返回相同的三個Notes。 當我注意的對象列表,我做到以下幾點:
private void fetchNotesAndSave() {
List<Notes> notes = getNotesViaRetrofit();
Realm realm = Realm.getInstance(mContext);
realm.beginTransaction();
realm.copyToRealmOrUpdate(notes);
realm.commitTransaction();
realm.close();
}
之後,我把這些線檢查的存儲對象計數:
int notesCount = mRealm.where(Note.class).findAll().size();
int templatesCount = mRealm.where(Template.class).findAll().size();
第一次:
notesCount == 3;
templatesCount == 3;
沒錯。但是,如果我再次調用服務器,獲得相同的音符(相同的PrimaryKey IDS),並調用fetchNotesAndSave()再次,我會得到這些結果:
notesCount == 3;
templatesCount == 6;
每次我打電話copyToRealmOrUpdate(),嵌套的對象,那些與primaryKey對象內部重複 - 沒有更新。
有什麼方法可以改變這種行爲嗎? 如果您需要更多信息,請讓我知道。提前致謝!
我明白,但在我的情況下,有很多嵌套類,我不能爲他們每個人生成'@ PrimaryKey'。例如,我使用這個技巧來處理Strings的列表https://github.com/realm/realm-java/issues/575,所以我應該爲每個'RealmString'生成'@ PrimaryKey'。這將是真正的地獄...... –
有沒有任何解決方法,以保持與超類沒有「@ PrimaryKey」嵌套類一對一的關係,所以他們正確更新? –
目前沒有。你將不得不手動進行清理。 –