防止greenDAO插入重复条目

use*_*946 2 android duplicates greendao

我有一个活动将解析json数据并在活动开始后使用greenDAO更新数据库.它的更新代码如下:

exampleDao.insertOrReplace(exampleObj);
Run Code Online (Sandbox Code Playgroud)

但是当活动返回并恢复时,它将继续插入导致重复数据输入与不同的主键但相同的数据,如何防止重复数据输入?

非常感谢

Ale*_*exS 5

由于您没有提供有关数据模型的架构或类似信息,因此这个答案只是猜测!

您可能正在使用自动增量主键.

这意味着您的主键可能未包含在JSON数据中,导致主键属性为null.

这告诉greendao这是一个新条目,greendao将插入一个带有新主键的新条目.

尝试先读取对象然后调用insertOrReplace:

Example oldObj;
try {
    // Try to find the Example-Object if it is already existing.
    oldObj = exampleDao.queryBuilder().where(someCondition).unique();
} catch (Exception ex) {
    oldObj = null;
}
if (oldObj == null) {
    oldObj = new Example();
}
// update oldObj with the data from JSON
exampleDao.insertOrReplace(oldObj);
Run Code Online (Sandbox Code Playgroud)