从 android 中的领域结果创建独立对象

Create standalone object from realm result in android

我是 android 领域的新手。 我正在使用以下代码从领域获取产品对象。

ProductModel prodObj = realm.where(ProductModel.class).equalTo("product_id","12").findFirst();

如何创建 prodObj 的独立副本? 我想更新一些不应该影响领域数据库的字段值。我不想使用 setter 方法手动设置它,因为模型 class 包含太多字段。有什么简单的方法可以创建 prodObj 的独立副本吗?

Realm 只有 copyToRealm 方法,没有 copyFromRealm 方法。目前,模型 类 存在一些限制(参见 https://realm.io/docs/java/latest/#objects),但我们正在调查和试验如何解除这些限制。

我们有一个关于您所问内容的未决问题:https://github.com/realm/realm-java/issues/931。但目前,您必须手动复制我们的对象。

您可以通过 Jackson 将对象序列化为 JSON 字符串并反序列化为独立对象,例如:

ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(yourObject);
objectMapper.readValue(json, YourModel.class);

GSON 可能无法工作,因为它在生成 JSON.

时不支持 getter/setter

我知道这是一个糟糕的解决方案。
但这可能是唯一的方法。

从 0.87.0 开始

  • Added Realm.copyFromRealm() for creating detached copies of Realm objects (#931).

如果有人像我一样想知道我们如何实现这个 copyFromRealm(),它是这样工作的:

ProductModel prodObj = realm.where(ProductModel.class)
                            .equalTo("product_id", "12")
                            .findFirst();

ProductModel prodObjCopy = realm.copyFromRealm(prodObj);