错误:实体必须至少具有1个用@PrimaryKey注释的字段

时间:2018-06-23 16:45:24

标签: android

我对使用房间持久性并不陌生,每当我尝试运行代码时都会遇到此错误。编辑时它没有显示错误,但是我在gradle上出现了构建错误。我不得不复制粘贴代码令我失望,但似乎都没有。错误低于

error: An entity must have at least 1 field annotated with @PrimaryKey

我该如何解决? 我的代码在下面;

 package com.revosleap.dummy.DatabaseMov;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.Ignore;
import android.arch.persistence.room.PrimaryKey;

@Entity

public class TodoListItem {
    @Ignore
    @PrimaryKey(autoGenerate = true)
     private int id;

    @ColumnInfo(name = "time")
    private String time;

    @ColumnInfo(name="title")
    private String title;

    public TodoListItem(){

    }

    public TodoListItem(String time, String title) {
        this.time = time;
        this.title = title;
    }

    public String getTime() {
        return time;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getId() {
        return id;
    }

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

2 个答案:

答案 0 :(得分:4)

您不应将主键设为私有静态

将此行private int id;更改为

@PrimaryKey
public int id;

更多详细信息Room entities

答案 1 :(得分:2)

您不应将@Ignore与@PrimaryKey一起使用

  

@忽略注释从Room的处理中忽略标记的元素   逻辑。