美文网首页
GreenDao的更新无效

GreenDao的更新无效

作者: 草色陆连清 | 来源:发表于2020-08-28 11:06 被阅读0次

近期因为需要本地缓存一些数据,故使用到了第三方框架GreenDao,该框架的使用方法在此不做赘述,此篇只记录使用greendao过程中遇到的坑(后续使用中如果遇到其他问题再进行更新)。

1.调用自动生成的dao对象的update方法后无效:
调用update方法后,再获取数据库中的数据仍会取到更新前的数据。该现象是因为greendao自带的缓存机制并不会随着调用update方法后及时进行更新,所以在调用update方法后,需要调用detachAll方法进行缓存的删除。

    public void updateLocation(WeatherLocation weatherLocation) {
        mWritableDao.update(weatherLocation);
        //更新后删除缓存数据库信息
        mWritableDao.detachAll();
    }

2.在对被注释了@Entity的实体类进行修改后(新增、删除该实体类中的变量),重新运行程序后在使用greendao的地方会报找不到相关字段的sql语句错误:
greendao只会在程序初始化之后自动生成@Entity实体类的相关表,在app进行更新后并不会根据@Entity实体类的更新而去重新构建相关表类,解决该问题的方法为卸载后重新安装app。但是一方面在实际开发过程中,经常会对要缓存的实体类中的字段进行增删,另一方面在版本更新后让用户卸载再安装体验太差。所以在此提供一个存储思路:对于要缓存的对象,在进行缓存前将该实体类进行json转换,把该对象转换成string字符串,再将该字符串作为@Entity实体类中的string字段进行缓存,@Entity实体类中的变量即可固定成数据库id、string字符串

@Entity
public class WeatherLocationTotal {


    @Id(autoincrement = true)
    private Long dbid;
    private String json;

    @Generated(hash = 197335340)
    public WeatherLocationTotal(Long dbid, String json) {
        this.dbid = dbid;
        this.json = json;
    }

    @Generated(hash = 1000997541)
    public WeatherLocationTotal() {
    }

    public Long getDbid() {
        return this.dbid;
    }

    public void setDbid(Long dbid) {
        this.dbid = dbid;
    }

    public String getJson() {
        return this.json;
    }

    public void setJson(String json) {
        this.json = json;
    }

如此,只要在取出json字段后再进行一次json转对象的操作就可以完成对象存储,解决上述问题。这里只提供一个思路,具体json如何转实体类以及实体类如何转json,网上资料不少,不再进行赘述

相关文章

  • GreenDao的更新无效

    近期因为需要本地缓存一些数据,故使用到了第三方框架GreenDao,该框架的使用方法在此不做赘述,此篇只记录使用g...

  • GreenDao实操案例

    GreenDao实操案例 GreenDao实际项目使用 自动生成数据对象 自带版本更新机制(数据自动迁移),可为一...

  • Greendao-增量更新

    在上一篇后,我们的已经完美使用了数据库,我们的数据库也有了数据,但是问题来了新问题,我们在原来的表增加字段,怎么更...

  • 数据库框架踩坑记录

    GreenDao 缓存机制,导致更新记录后查询不到真实数据问题:更新记录后,数据库中的数据已经更新,但缓存中的数据...

  • Android之greenDao使用

    Android之greenDao使用 一、greenDao简介 1. 什么是greenDao GreenDAO是一...

  • GreenDao快速入门使用

    GreenDao快速入门使用 greenDao简介 工具和版本 greenDao如何使用 1、把greenDao添...

  • GreenDao 3.2 入门配置以及简单使用

    相关资料 GreenDao 官网:http://greenrobot.org/greendao/GreenDao ...

  • greenDAO封装

    EasygreenDAO 基于greenDAO的上层调用封装。 greenDAO的集成 greenDAO的集成和说...

  • GreenDao加密与更新升级

    前言: 上一篇简介了greendao的数据库的接入以及简单的操作,既然涉及到数据库中的数据,那就必须考虑到加密问题...

  • GreenDAO 3更新说明

    本文翻译自GreenDAO官方文档: http://greenrobot.org/greendao/documen...

网友评论

      本文标题:GreenDao的更新无效

      本文链接:https://www.haomeiwen.com/subject/bpaksktx.html