Android架构组件:房间:没有这样的表格

时间:2017-06-17 08:12:45

标签: java android android-architecture-components

我正在尝试使用新的Architecture组件,但是当我尝试运行时,我得到:

“错误:(375,24)错误:查询出现问题:[SQLITE_ERROR] SQL错误或缺少数据库(没有这样的表:帖子)”

以下是我的课程。

** ENTITY:**

@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 个答案:

答案 0 :(得分:13)

  

默认情况下,Room 使用类名作为数据库表名。如果希望表具有不同的名称,请设置@Entity批注的tableName属性,如以下代码段所示:

https://developer.android.com/topic/libraries/architecture/room.html

似乎你认为它会使自己的课程多元化。

所以,要么使用SELECT * FROM Post

或做

@Entity(tableName = "posts")
class Post {
    ...
}