欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GreenDAO踩过的那些坑

程序员文章站 2024-01-21 19:19:16
...

GreenDao据说是效率最高的orm框架,这次公司项目需要,想起来就用了,没想到一连踩了两个坑,加班加点,活了一天半的时间才解决,为了纪念一下这个难忘的记忆,以及帮助后来人躲过这些坑,特将其一一叙述。

一、接入

给到大家github地址:https://github.com/greenrobot/greenDAO 按照上面的接入流程,按部就班,相信大家都会,这里就不详叙。

二、踩坑之一:bean实体里面写了注释

根据项目需求写了如下一个实体

@Entity
class VoltageEntity{
@Id
private long id;
private long time;//读取电压时的时间,精确到天
private float voltage
public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }

    public float getVoltage() {
        return voltage;
    }

    public void setVoltage(float voltage) {
        this.voltage = voltage;
    }

编译的时候你会发现不通过,相应的DaoMaster、DaoSession、VoltageEntityDao编译的时候不会重新生成,这时候有可能是因为你在实体里面加了注释,这时候可以尝试把注释去掉。

三、踩坑之二:id声明为long

尝试插入数据,你会发现报错:Caused by: android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: xxx._id (code 1555)
这时候把id的类型由long改为Long即可。