如何部分更新领域对象?
想象一下,我有一个这样的模型:
class Person {
@PrimaryKey long id;
String name;
Address address;
}
假设我将本地域数据库与后端同步,后端只给我一个名称已更改的ID和名称的人(没有地址).
如何仅更新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);
}
});