如何部分更新领域对象?
想象一下,我有一个这样的模型:
class Person {
@PrimaryKey long id;
String name;
Address address;
}
我们假设我将本地域数据库与后端同步,而后端仅为Person
提供了id
和name
,其中名称已更改(无地址) )。
如何仅更新Person.name
?此外,我希望Person.address
保持在本地数据库中。
答案 0 :(得分:4)
您只能插入/复制/更新整个对象,您无法指定"您不想保存哪些字段"。因此,您应该查询对象并设置其内容,然后将其保存回来。
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);
}
});
答案 1 :(得分:1)
要更新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();