![](/img/trans.png)
[英]EclipseLink - The primary key read from the row during the execution of the query was detected to be null. Primary keys must not contain 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.