【问题标题】:Unique constraint failed room database android唯一约束失败的房间数据库android
【发布时间】:2018-05-28 02:11:28
【问题描述】:

我遇到了 Room 数据库的问题,当我尝试使用我在 Dao 类中声明的插入方法将数据写入数据库时​​,会出现此错误:

唯一约束失败

有什么办法吗?

道类

@Dao
public interface TaskDao {

    @Query("SELECT * FROM task")
    List<Task> getall();

    @Insert
    void insert(Task task);

    @Delete
    void delete(Task task);
}

AppDatabase 类

@Database(entities = {Task.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract TaskDao mTaskDao();
}

模型类

@Entity
public class Task {

    @PrimaryKey
    private int uid;

    @ColumnInfo(name = "task_name")
    private String mName;

    @ColumnInfo(name = "task_box")
    private Integer mBox;

    @ColumnInfo(name = "is_done")
    private Integer mIsDone;
}

【问题讨论】:

    标签: android sqlite android-room


    【解决方案1】:

    我想通了,那个错误是因为数据中没有唯一值(在primaryKey中)所以我让它自动生成,

    模型类

    @Entity
    public class Task {
        @PrimaryKey(autoGenerate = true)
        private int uid;
        ...
    }
    

    【讨论】:

      【解决方案2】:

      AppDatabase 类

      @Database(entities = {Task.class}, version = 1, exportSchema = false)
      public abstract class AppDatabase extends RoomDatabase {
          public abstract TaskDao mTaskDao();
      }
      

      模型类

      @Entity
      public class Task {
      
          @PrimaryKey(autoGenerate = true)
          private int uid;
      
          @ColumnInfo(name = "task_name")
          private String mName;
      
          @ColumnInfo(name = "task_box")
          private Integer mBox;
      
          @ColumnInfo(name = "is_done")
          private Integer mIsDone;
      }
      

      【讨论】:

      • 我有相同的定义,但更新时出现唯一约束失败的错误。关于查询更新的任何解决方案。
      猜你喜欢
      • 2018-05-21
      • 2016-05-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多