首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GreenDao,禁用内部缓存get()

GreenDao,禁用内部缓存get()
EN

Stack Overflow用户
提问于 2013-10-13 12:02:32
回答 1查看 788关注 0票数 1

我正在使用GreenDao并创建一个核心函数,帮助您更新实体的一些值,如果实体不在数据库中,那么它也会插入它。问题是,我总是得到实体的缓存副本,我知道GreenDao管理一些简单的缓存,我希望能够绕过它。有人知道我如何才能从数据库中查询吗?

这不管用

代码语言:javascript
复制
.Dao().queryBuilder().where(comDao.Properties.Id.eq(id)).build().listLazyUncached();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 13:54:42

GreenDao在其daoCore.jar源代码中确实有内部缓存机制。

通过搜索缓存中的put()和get()实体,您可以轻松地禁用缓存。

代码语言:javascript
复制
 which is a: HashMap<? extends AbstractDao>.

然后生成MyDaoCore.jar并将其添加到项目中。

其次,为了更新或插入和实体(不完全替换它),您需要实现以下伪代码。很抱歉,我没有添加实际代码,我很久以前就解决了它。

代码语言:javascript
复制
public void insertOrUpdate(List<? extends AbstractDao> entities){
    List<Entity> toInsert;
    List<Entity> toUpdate;

    for (Entity e : entities) 
    {
       if( e.inDatabase() )
            toUpdate.add(e);
       else 
            toInsert.add(e);
    }
    Dao.updateAll(toUpdate);
    Dao.insertAll(toInsert);
}

编辑1:您可以使用IN语句在一个查询中获取实体的所有in,如下所示:

代码语言:javascript
复制
.where(Dao.Properties.Id.in(ids)).build().list();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19344969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档