我是android领域的新手。 我正在使用以下代码从领域获取产品对象。
ProductModel prodObj = realm.where(ProductModel.class).equalTo("product_id","12").findFirst();
如何创建prodObj的独立副本? 我想更新一些不应该在领域数据库中影响的字段值。我不想用setter方法手动设置它,因为模型类包含太多字段。有没有简单的方法来创建prodObj的独立副本?
答案 0 :(得分:13)
自0.87.0
- 添加了Realm.copyFromRealm(),用于创建Realm对象的分离副本(#931)。
答案 1 :(得分:3)
Realm只有copyToRealm
方法,而不是copyFromRealm
方法。目前,对模型类有一些限制(参见https://realm.io/docs/java/latest/#objects),但我们正在调查和试验如何解除这些限制。
我们有一个关于你问的确切问题的公开问题:https://github.com/realm/realm-java/issues/931。但目前,您必须手动复制我们的对象。
答案 2 :(得分:1)
如果有人想和我一样如何实现这个copyFromRealm()
,那就是它的工作原理:
ProductModel prodObj = realm.where(ProductModel.class)
.equalTo("product_id", "12")
.findFirst();
ProductModel prodObjCopy = realm.copyFromRealm(prodObj);
答案 3 :(得分:0)
您可以将对象序列化为JSON字符串,并通过Jackson反序列化为独立对象,如:
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(yourObject);
objectMapper.readValue(json, YourModel.class);
GSON可能不起作用,因为它在制作JSON时不支持getter / setter。
我知道这是一个可怕的解决方案 但它可能是唯一的方法。