领域 - 使用方法createOrUpdateAllFromJson更新对象

时间:2016-05-16 15:59:50

标签: android json realm

我有一个在json中有三个字段的对象,以及我自己的一个字段

  public class partner extends RealmObject {
        @PrimaryKey
        @SerializedName("id")
        private int id;

        @SerializedName("name")
        private String name;

        @SerializedName("subtitle")
        private String subtitle;

        private int testInt;
    }

这是一个小例子json

[{
"id":1,
"name":"test1",
"subtitle":"test2",
}]

我将值保存在字段" testInt"中,所以

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
hPartner.setTestInt(6);
realm.commitTransaction();

我使用代码创建/更新对象。

realm.createOrUpdateAllFromJson(partner.class, new ByteArrayInputStream(str.getBytes(Charset.forName("UTF-8"))));

一切正常。 但价值存储在现场" testInt"被清除了。更新后,我看到值为零。 (但必须看到值6)

我应该怎样对字段中的值" testInt"不删除?

更新 每次应用程序启动时,我的数据都会更新。 我做了以下测试(此代码仅用于测试)。 此代码在启动应用程序

运行
    realm.beginTransaction();
    realm.createOrUpdateAllFromJson(partner.class, new ByteArrayInputStream(jsonData.getBytes(Charset.forName("UTF-8"))));
    realm.commitTransaction();

    realm.beginTransaction();
    partner partner = realm.where(partner.class).findFirst();
    partner.setTestInt(6);
    realm.commitTransaction();

    realm.beginTransaction();
    realm.createOrUpdateAllFromJson(partner.class, new ByteArrayInputStream(jsonData.getBytes(Charset.forName("UTF-8"))));
    realm.commitTransaction();

    partner = realm.where(partner.class).findFirst();

在后者中,对象"伙伴"值存储。它有效!

但是,如果我重新启动应用程序并检查第一个对象" partner"价值" testInt"被清除了。某处有错误或错误。

UPDATE2 发现删除所有记录的错误代码。我的错 realm.where(partner.class).findAll()deleteAllFromRealm();

0 个答案:

没有答案