Компоненты архитектуры Android: Комната: Нет такой таблицы
Я пытаюсь использовать новые компоненты архитектуры, но когда я пытаюсь запустить, я получаю:
"Ошибка:(375, 24) ошибка: существует проблема с запросом: [SQLITE_ERROR] Ошибка SQL или отсутствует база данных (нет такой таблицы: записи)"
Ниже приведены мои занятия.
**ЮРИДИЧЕСКОЕ ЛИЦО: **
@Entity
public static class Post {
@PrimaryKey
private String id;
@ColumnInfo(name = "data")
private String data;
public String getId() {
return id;
}
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
public void setId(String id) {
this.id = id;
}
}
DAO:
@Dao
public interface PostDao {
@Query("SELECT * FROM posts")
LiveData<List<Post>> getAll();
@Insert
void insertAll(Post... posts);
@Insert
void insert(Post post);
@Delete
void delete(Post post);
}
База данных:
@Database(entities = {Post.class}, version = 1)
public static abstract class AppDatabase extends RoomDatabase {
public abstract PostDao postDao();
}
1 ответ
Решение
По умолчанию Room использует имя класса в качестве имени таблицы базы данных. Если вы хотите, чтобы таблица имела другое имя, установите свойство tableName аннотации @Entity, как показано в следующем фрагменте кода:
https://developer.android.com/topic/libraries/architecture/room.html
Кажется, вы предполагали, что это само по себе будет плюрализировать класс.
Итак, либо используйте SELECT * FROM Post
или сделать
@Entity(tableName = "posts")
class Post {
...
}