首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绿色刀插入不生成id

绿色刀插入不生成id
EN

Stack Overflow用户
提问于 2017-05-21 04:05:00
回答 1查看 1.5K关注 0票数 0

我有一个简单的模型,我正在通过GreenDao将它插入到sqlite中。下面是模型类:

代码语言:javascript
复制
@Entity
public class ImageModel implements Parcelable {

    public static final Creator<ImageModel> CREATOR = new Creator<ImageModel>() {
        @Override
        public ImageModel createFromParcel(Parcel in) {
            return new ImageModel(in);
        }

        @Override
        public ImageModel[] newArray(int size) {
            return new ImageModel[size];
        }
    };
    @Id(autoincrement = true)
    private long id;
    private String downloadURL;
    private String pasteId;
    private String storageLocation;


    protected ImageModel(Parcel in) {
        id = in.readLong();
        downloadURL = in.readString();
        pasteId = in.readString();
        storageLocation = in.readString();
    }


    @Generated(hash = 345376828)
    public ImageModel(long id, String downloadURL, String pasteId,
                      String storageLocation) {
        this.id = id;
        this.downloadURL = downloadURL;
        this.pasteId = pasteId;
        this.storageLocation = storageLocation;
    }


    @Generated(hash = 799163379)
    public ImageModel() {
    }

    @Override
    public String toString() {
        return "ImageModel{" +
                "id=" + id +
                ", downloadURL='" + downloadURL + '\'' +
                ", pasteId='" + pasteId + '\'' +
                ", storageLocation='" + storageLocation + '\'' +
                '}';
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeLong(id);
        dest.writeString(downloadURL);
        dest.writeString(pasteId);
        dest.writeString(storageLocation);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public String getDownloadURL() {
        return this.downloadURL;
    }

    public void setDownloadURL(String downloadURL) {
        this.downloadURL = downloadURL;
    }

    public String getPasteId() {
        return this.pasteId;
    }

    public void setPasteId(String pasteId) {
        this.pasteId = pasteId;
    }

    public String getStorageLocation() {
        return this.storageLocation;
    }

    public void setStorageLocation(String storageLocation) {
        this.storageLocation = storageLocation;
    }

    public long getId() {
        return this.id;
    }

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

}

我试图通过ImageModel ()调用插入这个AbstractDao.insert类的实例,但是返回的行id始终是0。

对于id字段类型,我尝试使用Long而不是long,如本github讨论中所建议的:https://github.com/greenrobot/greenDAO/issues/441

但这似乎行不通。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2017-06-20 23:00:19

我也有过类似的问题。做以下工作:

  1. 在所有id为自动增量的表中更改long id by Long id
  2. 删除GreenDAO生成的所有代码(如果不使用生成器或使用的是@annotations of GreenDAO 3),然后清理项目。
  3. 对所有具有id自动增量ALTER TABLE或的表执行以下操作:https://stackoverflow.com/a/32429968/5286400

如果需要,请参阅下一个具有类似问题的链接:https://stackoverflow.com/a/44527501/5286400

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44093053

复制
相关文章

相似问题

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