簡體   English   中英

主鍵值不能為null。 領域

[英]Primary key value must not be null. Realm

我在使用Realm時遇到了奇怪的問題,我是新手。 我的模型具有@PrimaryKey私有字符串ID; 字段,當我嘗試將模型保存到領域中時,此異常使我的應用程序崩潰。

11-25 10:14:55.014 22175-22175/? D/myTag: false
java.lang.IllegalArgumentException: Primary key value must not be null.

模型的名稱為Run,這是我的用法。

@Override
public void add(Run run) {
    realm.beginTransaction();

        int lastId;
        RealmResults<Run> all = realm.where(Run.class).findAll();
        if(all.isEmpty())
            run.setId("0");
        else {
            lastId = Integer.parseInt(all.last().getId());
            run.setId(String.valueOf(lastId + 1));
        }
        Log.d("myTag",""+(run.getId()==null));
        realm.copyToRealmOrUpdate(run);

    realm.commitTransaction();
}

我的模特:

public class Run extends RealmObject {
@PrimaryKey
private String id;
private long activeShiftId;
private long storeId;
private int runState;
private RealmList<Order> orders;
private double totalRevenue;
private double creditRevenue;
private long estimatedTime;
...
}

日志顯示錯誤。 我究竟做錯了什么?

java.lang.IllegalArgumentException: Primary key value must not be null.

解決此問題,我忘記了我在Run模型中的集合,將id設置為每個項目,現在可以使用了。

如果您的RealmObject中有RealmObject的集合,則應為該集合中的每個項目設置id(主鍵),並將主鍵設置為外部模型的字段。

從給定的代碼片段中,我可以猜到,在您的模型中, Id是主鍵字段(默認情況下不應為null)。 這就是為什么它會引發錯誤。

這行將其設置為null-

  run.setId("0");

嘗試根據您的程序邏輯修改此行。

Realm 0.89.0開始 ,以@PrimaryKey注釋的字段可以為null。 參見CHANGELOG

暫無
暫無

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

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