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

在android中从领域结果创建独立对象,android,realm,Android,Realm,我是android领域的新手。 我使用下面的代码从领域中获取产品对象 ProductModel prodObj = realm.where(ProductModel.class).equalTo("product_id","12").findFirst(); 如何创建prodObj的独立副本? 我想更新一些字段的值,这些值不应该影响领域数据库。我不想用setters方法手动设置它,因为模型类包含太多的字段。有什么简单的方法可以创建prodObj的独立副本吗?领域只有copyToRealm方法,

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

ProductModel prodObj = realm.where(ProductModel.class).equalTo("product_id","12").findFirst();
如何创建prodObj的独立副本?
我想更新一些字段的值,这些值不应该影响领域数据库。我不想用setters方法手动设置它,因为模型类包含太多的字段。有什么简单的方法可以创建prodObj的独立副本吗?

领域只有
copyToRealm
方法,而没有
copyFromRealm
方法。目前,对模型类有很多限制(请参阅),但我们正在研究和试验如何取消这些限制


我们有一个关于你的问题的公开问题:。但目前,您必须手动复制我们的对象。

您可以将对象序列化为JSON字符串,并通过以下方式反序列化为独立对象:

GSON可能无法工作,因为它在生成JSON时不支持getter/setter

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

自0.87.0以来

  • 添加了Realm.copyFromRealm(),用于创建领域对象的分离副本(#931)

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

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

ProductModel prodObjCopy = realm.copyFromRealm(prodObj);

你好@usp。谢谢你的回答。这是一个创建新对象的简单方法。但我关心的是realm提供了json响应的自动解析功能。jackson几乎做了同样的事情。正如你所说,这可能是我必须包含jackson库的唯一方法。我们可以在模型类上使用多个注释吗?嗨@Alex:)您提到的是
Realm#createObjectFromJson
?我认为该方法创建了非独立对象。是的,我们可以在字段或模型类上使用多个注释,如
@PrimaryKey@JsonProperty(“product_id”)private int productId
ProductModel prodObj = realm.where(ProductModel.class)
                            .equalTo("product_id", "12")
                            .findFirst();

ProductModel prodObjCopy = realm.copyFromRealm(prodObj);