Android 领域 - 主键约束异常和重复
Android Realm - Primary Key Constraint Exception & Duplication
我是 Android 编程和领域的新手。找不到任何相关文章,所以我在这里发布问题..
我正在从我的 JSON 文件写入 Realm,该文件被记录并反映在 RealmBrowser 中。但是当我重新启动我的应用程序时,我在 io.realm.exceptions.RealmPrimaryKeyConstraintException: Value already exists: 20151101
上遇到错误。所有的值都是直接从我的 JSON 文件中导出的,我 运行 它在 for 循环下的所有数据都已记录在 Realm 数据库中。
for (int i = 0; i < jsonFile.length(); i++) {
try {
RealmConfiguration objectDB = new RealmConfiguration.Builder(getContext()).
name("objectDB.realm").build();
Realm realm = Realm.getInstance(objectDB);
realm.beginTransaction();
Object object = realm.createOrUpdateObjectFromJson(Object.class, jsonFile);
object.setPrimaryId(primaryId);
//and set more more data...
realm.copyToRealmOrUpdate(object);
realm.commitTransaction();
} catch (JSONException e) {
e.printStackTrace();
}
}
我的理解是,如果 primaryKey 存在于 Realm table 上,它只会更新对任何 setter() 的更改,但现在我遇到了 "io.realm.internal.Table.throwDuplicatePrimaryKeyException" 错误。谁能告诉我一路上哪里做错了什么?
非常感谢这里的好心人!
为什么会有这条线?
object.setPrimaryId(primaryId);
我假设信息是 jsonFile 的一部分,并且您在那里设置的主键可能与已经存在的主键冲突。
我认为你应该更换这个
Object object = realm.createOrUpdateObjectFromJson(Object.class, jsonFile);
object.setPrimaryId(primaryId);
//and set more more data...
realm.copyToRealmOrUpdate(object);
像这样
Object object = gson.fromJson(jsonFile, Object.class);
object.setPrimaryId(primaryId);
realm.beginTransaction();
realm.copyToRealmOrUpdate(object);
realm.commitTransaction();
Gson 是 Realm 的依赖项,所以我认为你可以 Gson gson = new Gson()
在某个地方做一个。
我是 Android 编程和领域的新手。找不到任何相关文章,所以我在这里发布问题..
我正在从我的 JSON 文件写入 Realm,该文件被记录并反映在 RealmBrowser 中。但是当我重新启动我的应用程序时,我在 io.realm.exceptions.RealmPrimaryKeyConstraintException: Value already exists: 20151101
上遇到错误。所有的值都是直接从我的 JSON 文件中导出的,我 运行 它在 for 循环下的所有数据都已记录在 Realm 数据库中。
for (int i = 0; i < jsonFile.length(); i++) {
try {
RealmConfiguration objectDB = new RealmConfiguration.Builder(getContext()).
name("objectDB.realm").build();
Realm realm = Realm.getInstance(objectDB);
realm.beginTransaction();
Object object = realm.createOrUpdateObjectFromJson(Object.class, jsonFile);
object.setPrimaryId(primaryId);
//and set more more data...
realm.copyToRealmOrUpdate(object);
realm.commitTransaction();
} catch (JSONException e) {
e.printStackTrace();
}
}
我的理解是,如果 primaryKey 存在于 Realm table 上,它只会更新对任何 setter() 的更改,但现在我遇到了 "io.realm.internal.Table.throwDuplicatePrimaryKeyException" 错误。谁能告诉我一路上哪里做错了什么?
非常感谢这里的好心人!
为什么会有这条线?
object.setPrimaryId(primaryId);
我假设信息是 jsonFile 的一部分,并且您在那里设置的主键可能与已经存在的主键冲突。
我认为你应该更换这个
Object object = realm.createOrUpdateObjectFromJson(Object.class, jsonFile);
object.setPrimaryId(primaryId);
//and set more more data...
realm.copyToRealmOrUpdate(object);
像这样
Object object = gson.fromJson(jsonFile, Object.class);
object.setPrimaryId(primaryId);
realm.beginTransaction();
realm.copyToRealmOrUpdate(object);
realm.commitTransaction();
Gson 是 Realm 的依赖项,所以我认为你可以 Gson gson = new Gson()
在某个地方做一个。