Android 如何避免使用Realm insertOrUpdate/copyToRealmOrUpdate更新空值?

Android 如何避免使用Realm insertOrUpdate/copyToRealmOrUpdate更新空值?,android,realm,Android,Realm,场景1:我创建了带有服务器响应的领域数据库(将JSON响应转换为具有值id(PK)和名称的UserRealmModel列表),并执行CopyTorelmOrUpdate操作(list_of_realmresult)。它第一次运行良好 场景2:现在,当我第二次从服务器获得响应时,我为一些用户获取空值,然后再次执行copyToRealmOrUpdate(list_of_realmresult)操作,并为受尊重的id将这些名称设置为空 现在我想避免对来自服务器端的空值执行更新操作。如何使用copyTo

场景1:我创建了带有服务器响应的领域数据库(将JSON响应转换为具有值id(PK)和名称的UserRealmModel列表),并执行CopyTorelmOrUpdate操作(list_of_realmresult)。它第一次运行良好

场景2:现在,当我第二次从服务器获得响应时,我为一些用户获取空值,然后再次执行copyToRealmOrUpdate(list_of_realmresult)操作,并为受尊重的id将这些名称设置为空


现在我想避免对来自服务器端的空值执行更新操作。如何使用copyToRealmOrUpdate/insertOrUpdate方法实现这一点。

您可以使用
@必需的
对这些字段进行注释

必填字段和空值

在某些情况下,null不是字段的适当值。@Required注释可用于告诉Realm强制检查以禁止空值

如果试图用空值更新必填字段,将引发异常。我不知道是哪一个,但我想你可以很容易地找到它。

copyToRealmOrUpdate()
覆盖了原始对象

您必须自己手动管理合并

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        UserRealmModel userModel = realm.where(UserRealmModel.class).equalTo("id", id).findOne();
        if(userModel == null) {
            // create and save new
        } else {
            // merge non-null fields
        }
        realm.copyToRealmOrUpdate(userModel);
    }
});