【发布时间】:2016-08-22 10:05:49
【问题描述】:
如何部分更新领域对象?
想象一下我有一个这样的模型:
class Person {
@PrimaryKey long id;
String name;
Address address;
}
假设我将本地领域数据库与后端同步,而后端仅给我一个 Person 和 id 和 name,其中名称已更改(无地址)。
如何仅更新 Person.name ?此外,我希望Person.address 保留在本地数据库中。
【问题讨论】:
-
您必须手动完成。在Realm上查询
id,更新启动事务更新你从服务器获取的值并提交 -
真的没有别的办法了吗?听起来很痛苦......
-
我以前见过这个问题,Realm 团队的一个人在这里回答了这个问题。我现在找不到链接,但你可以重新搜索它。是的,很痛苦。如果有一个带有空检查的
update方法,那就太好了。 -
@Budius 从技术上讲,您应该开始交易,在 Realm 上查询
id。更新你得到的值然后提交。 (或在失败的情况下取消) -
如果您使用
Realm.createOrUpdateAllFromJson()(和其他与JSON相关的API),它将忽略JSON对象中不存在的字段。这意味着如果对象不存在,该字段将设置为默认值,如果存在具有相同主键的对象,则保留原始值。