java - 主键值不能为空。 Realm

标签 java android realm

我在使用 Realm 时遇到了奇怪的问题,我是新手。我的模型有@PrimaryKey private String id;字段,当我尝试将模型保存到 Realm 时,我的应用程序崩溃并出现此异常。

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(主键),并将主键设置为外部模型的字段。

关于java - 主键值不能为空。 Realm ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33920298/

相关文章:

java - Aparapi GPU 执行速度比 CPU 慢

android - 使用 PagedListAdapter/PagedList 添加列表部分标题

android - react native 图像选择器 : null is not an object (evaluating 'ImagePickerManager.showImagePicker' )

android - 为什么 Realm 会为所有的模型类生成代理类?

ios - 如何在 Realm swift 中使用 distinctUnionOfObjects

java.lang.NumberFormatException 和 SystemDecimalSeparator

java - 如何使用 Apache Maven 将构建部署到服务器?

java - 如何更改Java Post上传文件的最大大小

javascript - 在 Android Studio 上使用 JavaScript 时应用崩溃

swift - ObjectMapper 不序列化新字段