主键值不能为空。领域
Primary key value must not be null. Realm
我在使用 Realm 时遇到了奇怪的问题,我是新手。我的模型有@PrimaryKey private String id;字段,当我尝试将模型保存到领域时,我的应用程序崩溃并出现此异常。
11-25 10:14:55.014 22175-22175/? D/myTag: false
java.lang.IllegalArgumentException: Primary key value must not be null.
模型的名称为 运行,这是我的使用方法。
@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.
根据给定的代码片段,我可以猜测,在您的模型中,Id 是一个主键字段(默认情况下不应为 null)。这就是它引发错误的原因。
此行将其设置为 null-
run.setId("0");
尝试根据你的程序逻辑修改这一行。
解决这个问题,我忘记了我的 运行 模型中的 collection,为每个项目设置 id,它现在可以工作了。
如果您的 RealmObject 中有 collection 个 RealmObject,您应该为其中的每个项目设置 id(主键)collection,并将主键设置为外部模型的字段。
自 Realm 0.89.0 字段起,注释为 @PrimaryKey,可能是无效的。
参见 CHANGELOG。
我在使用 Realm 时遇到了奇怪的问题,我是新手。我的模型有@PrimaryKey private String id;字段,当我尝试将模型保存到领域时,我的应用程序崩溃并出现此异常。
11-25 10:14:55.014 22175-22175/? D/myTag: false
java.lang.IllegalArgumentException: Primary key value must not be null.
模型的名称为 运行,这是我的使用方法。
@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.
根据给定的代码片段,我可以猜测,在您的模型中,Id 是一个主键字段(默认情况下不应为 null)。这就是它引发错误的原因。
此行将其设置为 null-
run.setId("0");
尝试根据你的程序逻辑修改这一行。
解决这个问题,我忘记了我的 运行 模型中的 collection,为每个项目设置 id,它现在可以工作了。
如果您的 RealmObject 中有 collection 个 RealmObject,您应该为其中的每个项目设置 id(主键)collection,并将主键设置为外部模型的字段。
自 Realm 0.89.0 字段起,注释为 @PrimaryKey,可能是无效的。 参见 CHANGELOG。