ORMLite不会使用相同的对象计数进行更新

时间:2015-05-05 21:38:29

标签: android ormlite

我尝试做简单的测试。我有来自REST API的json响应,有~250个对象商店和文件中的相同响应,但第一个商店有不同的名称。第一步是加载大约250个商店的JSON文件,并使用ORMLite保存在本地数据库中。下一步是与API连接并获得相同的响应。新的json响应是解析,UPDATE存在于数据库中的元素。结果是什么?

现在我使用ListView转到简单的Activity并调用getShopsAll()。此方法在更新之前返回旧数据。为什么? 这是在数据库中保存商店的方法:

public void createShop(final ArrayList<ModelSklep> list) throws Exception {
    getDaoShop().callBatchTasks(new Callable<Void>() {      
        @Override
        public Void call() {
            for(ModelSklep item : list) {
                createShop(item);
                if(item.getHoursList().size() > 0) {
                    createHours(item.getHoursList());
                }
            }
            return null;
        }
    });
}

Method createshop:

public boolean createShop(ModelSklep item) {
    try {
        getDaoShop().createOrUpdate(item);
        return true;
    } catch (SQLException e) {
        return false;
    }
}

方法getShopAll:

public ArrayList<ModelSklep> getShopAll() {
    try {
        return (ArrayList<ModelSklep>) getDaoShop().queryBuilder().orderByRaw(
                "nazwaPelna COLLATE LOCALIZED ASC").query();
    } catch (SQLException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    }
}

对象正在更新。但是getShopAll()返回旧的数据对象。 更新后清除缓存不起作用。

帮助。我不知道如何解决这个问题。

[编辑]

public Dao<ModelSklep, Integer> getDaoShop() {
    if(modelShopDao == null) {
        try {
            modelShopDao = getDao(ModelSklep.class);
            modelShopDao.setObjectCache(true);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    return modelShopDao;
}

0 个答案:

没有答案