2015-06-18 53 views
6

我是android領域的新手。 我正在使用follwing代碼從領域獲取產品對象。從領域創建獨立對象導致android

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

如何創建prodObj的獨立副本? 我想更新一些字段的值,這些值不應該影響領域數據庫。我不想用setter方法手動設置它,因爲模型類包含太多的字段。有沒有簡單的方法來創建prodObj的獨立副本?

回答

9

由於0.87.0

  • 新增Realm.copyFromRealm()創建領域對象(#931)的超脫副本。
0

您可以將對象序列化到JSON字符串和反序列化一樣到一個獨立的對象由Jackson

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

GSON可能無法正常工作,因爲它不支持的getter/setter時,它使一個JSON。

我知道這是一個可怕的解決方案。
但它可能是唯一的方法呢。

+0

你好@usp。謝謝answer.it是創建新對象的好方法。但我擔心的是,領域提供json response..jackson的自動解析功能幾乎可以做同樣的事情。正如你所說,它可能是唯一的方式,我必須包括傑克遜圖書館。我們可以在模型類上使用多個註釋嗎? –

+0

Hi @Alex :) 你在提及'Realm#createObjectFromJson'嗎?我認爲該方法創建非獨立對象。 是的,我們可以在字段或模型類上使用多個註釋,比如'@PrimaryKey @JsonProperty(「product_id」)private int productId;' – usp

0

如果有人想知道,像我這樣的,我們怎樣才能實現這個copyFromRealm(),這是它如何工作的:

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

ProductModel prodObjCopy = realm.copyFromRealm(prodObj);