Сбой УНИКАЛЬНОГО ограничения с использованием room

#android #android-room

#Android #android-room

Вопрос:

У меня есть база данных Room с запросом insert и автоматически сгенерированным первичным ключом, но я все еще сталкиваюсь с этой ошибкой android.database.sqlite.Исключение SQLiteConstraintException: сбой УНИКАЛЬНОГО ограничения

это класс сущности, в реальном коде я реализовал Parcelable, но я думаю, что это не влияет, поэтому я его не ставил

 
@Entity(tableName = "notes")
public class Note implements Parcelable {
    public static final String ID = "id";
    @Ignore
    public final String TAG = getClass().getName();
    @PrimaryKey(autoGenerate = true)
    public long id;
    @ColumnInfo(name = "header")
    private String header = "";
    @ColumnInfo(name = "body")
    private String body = "";
    @ColumnInfo(name = "date")
    private String date = "";
    
    public Note() {}

    public Note(String body){
        this.body=body;
        setDate();
    }
    public Note(String header, String body) {
        this.header = header;
        this.body = body;
        setDate();
    }
    public Note(String header ,String body,String date){
        this(header,body);
        setDate(date);
    }

    public String getHeader() {
        return header;
    }

    public void setHeader(String header) {
        this.header = header;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public void setDate() {
        Date currentTime = Calendar.getInstance().getTime();
        SimpleDateFormat sm = new SimpleDateFormat("yyyy-mm-dd hh:mm");
        date = sm.format(currentTime);
    }

    public String getDate() {
        return date;
    }

    public boolean isEmpty() {
        return header.isEmpty() amp;amp; body.isEmpty();
    }

    @Override
    public String toString() {
        return "Note{"  
                " "header":"   header  
                ",n"body":"   body   "n"  
                "}";
    }

    @Override
    public boolean equals(Object other) {
        Note o = (Note) other;
        return id == o.id;
    }

    public boolean equalsIgnoreDate(Note other) {
        if (other == null)
            return false;
        return header.equals(other.getHeader()) amp;amp; body.equals(other.getBody());
    }
}
  

это Dao

 @Dao
public abstract class NoteDao {
    @Query("select id,header,date from notes")
    public abstract List<Note> getAll();

    @Insert
    public abstract Long insert(Note note);

    @Delete
    public abstract void delete(Note note);

    @Update
    public abstract void update(Note note);

    @Query("select*from notes where id=:id")
    public abstract Note getNoteById(long id);
}
  

Комментарии:

1. Как вы это решили? Я получаю эту ошибку (crashlytics) из live apps, но не могу воспроизвести проблему.