[英]How to partially update a realm object
如何部分更新領域對象?
想象一下,我有一個這樣的模型:
class Person {
@PrimaryKey long id;
String name;
Address address;
}
假設我將本地域數據庫與后端同步,后端只給我一個名稱已更改的id
和name
的Person
(沒有地址)。
如何僅更新Person.name
? 此外,我希望Person.address
保持原樣在本地數據庫中。
您只能插入/復制/更新整個對象,不能指定“您不想保存的字段”。 所以你應該查詢你的對象並設置它的東西,然后保存回來。
final Address address = getAddress();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Person person = realm.where(Person.class).equalTo(PersonFields.ID, id).findFirst();
if(person == null) {
person = new Person(); // or realm.createObject(Person.class, id);
person.id = id;
}
person.address = address;
realm.insertOrUpdate(person);
}
});
要更新Person.name
您需要先查詢Person
對象,然后更新其name
。 所有其他字段將保持不變:
long id = ... // from backend
String newName = ... // from backend
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
Person person = realm.where(Person.class).equalTo("id", id).findFirst();
person.setName(newName);
realm.commitTransaction();
realm.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.