Компоненты архитектуры 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 {
    ...
}
Другие вопросы по тегам