GreenDAO踩过的那些坑

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即可。

你可能感兴趣的:(GreenDAO踩过的那些坑)