从 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);
我是 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);