#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, но не могу воспроизвести проблему.