簡體   English   中英

領域遷移重復值

[英]Realm Migration Duplicated values

我想做一個遷移(Realm 87.2),我之前做過其他工作,但這並不容易,我也不知道為什么

我以前的Categoriy.class

private int code;
private String title;
private String category;
private int order;
private boolean visible;

新的Category.class

@PrimaryKey @Index private String id;
    private int code;
    private String title;
    private String category;
    private int order;
    private boolean visible;

和在Migration.class

public class Migration....
int i = 0;
.....
  if(oldVersion == 7) {
            schema.get("Category").addField("id", String.class, FieldAttribute.PRIMARY_KEY).transform(new RealmObjectSchema.Function() {
                @Override
                public void apply(DynamicRealmObject obj) {
                    obj.set("id", UtilsForAll.getRandomUUID()); //Get Random UUID for previsoly added categories
                    obj.set("order", i);
                    i++;
                }
            });
oldVersion++;

}
} //finishClass

由於某種愚蠢的原因,我不知道我在做什么錯,它不斷給我這個錯誤:

java.lang.IllegalArgumentException:非法參數:字段“ id”不能是主鍵,它已經包含重復的值:

什么? 我很確定,在categorie類中沒有重復的值。

PS:這只是在我真正使用遷移功能並且有以前的類別記錄時發生

---------------------編輯22/03

嘗試了此作為Emanuelez的建議:

  if(oldVersion == 7) {
schema.get("Category").addField("id", String.class);
                schema.get("Category").transform(new RealmObjectSchema.Function() {
                    @Override
                    public void apply(DynamicRealmObject obj) {
                        obj.set("id", UtilsForAll.getRandomUUID()); //Get Random UUID for previsoly added categories

                    }
                });
    oldVersion++;

schema.get("Category").setPrimaryKey("id");
    }

錯誤變成了這個-

io.realm.exceptions.RealmMigrationNeededException:字段'id'不支持現有Realm文件中的空值。 從字段“ id”中刪除@Required或@PrimaryKey或使用io.realm.internal.Table.convertColumnToNotNullable()進行遷移。

ve tried .setNullable(“ id”,true);`

一切也沒有改變

要添加新的主鍵字段,您不能僅添加具有屬性的字段,因為所有這些字段都將初始化為其默認值,即全部相等,這會破壞主鍵協定。

要以正確的方式執行此操作,您必須:

  1. 創建一個新領域
  2. 用新的不同值填充新字段
  3. 將新字段設為主鍵

作為進一步參考,我建議您看一下RealmObjectSchema類的單元測試,可以在這里找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM