簡體   English   中英

如何部分更新領域對象

[英]How to partially update a realm object

如何部分更新領域對象?

想象一下,我有一個這樣的模型:

class Person {
    @PrimaryKey long id;
    String name;
    Address address;
}

假設我將本地域數據庫與后端同步,后端只給我一個名稱已更改的idnamePerson (沒有地址)。

如何僅更新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM