繁体   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