从领域创建独立对象导致android

时间:2015-06-18 13:16:41

标签: android realm

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

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

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

4 个答案:

答案 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。

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