2017-06-17 4 views
4

私は新しいアーキテクチャコンポーネントを使用しようとしているが、私は実行しようとすると、私が取得:Androidのアーキテクチャコンポーネント:ルーム:いいえ、そのようなテーブル

「エラー:(375、24)エラー:がありますがクエリの問題:[SQLITE_ERROR] SQLエラーまたはデータベースがありません(このようなテーブルはありません:posts) "

以下は私のクラスです。

** 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(); 
    } 
+0

あなたは*クラスは 'posts'テーブルに追加されます*ポストを前提としたのですか? –

+0

@ cricket_007、私はテーブルが名前として "投稿"を使って作成されると思ったので、私はかなり迷っています。 – Relm

+0

これはドキュメントによく書かれています。多分あなたはそれを逃したでしょう。 –

答えて

6

By default, Room uses the class name as the database table name. If you want the table to have a different name, set the tableName property of the @Entity annotation, as shown in the following code snippet:

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

それは、あなた自身がクラスを複数形にすると思ったようです。

ので、ちょうどこの

@Entity(tableName = "posts") 
class Post { 
    ... 
} 
関連する問題