2017-11-13 5 views
1

新しいルームライブラリのImは簡単なプロジェクトを作成します。DAOメソッドには、次のいずれかの注釈を付けることができます。挿入、削除、クエリ、更新

ここにエンティティクラスがあります。

@Entity(tableName = "user") 
public class User { 

    @PrimaryKey 
    private Integer id; 
    private String name; 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

ここはdaoクラスです。

@Dao 
public interface UserDao extends Dao { 

    @Query("SELECT * FROM user") 
    List<User> getAll(); 

    @Insert 
    void insert(User users); 

} 

ここにAppDatabaseクラスがあります。

@Database(entities = {User.class}, version = 1) 
public abstract class AppDatabase extends RoomDatabase { 

    private static AppDatabase INSTANCE; 

    public abstract UserDao userDao(); 

    public static AppDatabase getAppDatabase(Context context) { 
     if (INSTANCE == null) { 
      INSTANCE = 
        Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "database-test") 
          .allowMainThreadQueries() 
          .build(); 
     } 
     return INSTANCE; 
    } 

    public static void destroyInstance() { 
     INSTANCE = null; 
    } 
} 

これが私の主な活動です。

User user = new User(); 
     user.setName("Test"); 
     user.setId(2); 


     AppDatabase.getAppDatabase(this).userDao().insert(user); 
     AppDatabase.getAppDatabase(this).userDao().getAll(); 

しかし、私は上記のコードを実行します。私は下に誤りがあります。

Error:(14, 8) error: Abstract method in DAO must be annotated with interface android.arch.persistence.room.Query AND interface android.arch.persistence.room.Insert

私はそれを検索しますが、何も見つかりませんでした。ご意見ありがとうございます。

答えて

2

あなたのDAOインターフェイスはDaoインターフェイスを拡張すべきではありません。私の必要性については

@Dao 
public interface UserDao { 

    @Query("SELECT * FROM user") 
    List<User> getAll(); 

    @Insert 
    void insert(User users); 

} 
+1

うん私のダオ・インタフェースは、他のインターフェイスを拡張する場合、私は、同じ問題を持っている:(... – issamux

-1

私はこのような抽象クラスを使用しました、:

public interface IMainDao { 
String getId(); 
} 


@Dao 
public abstract class UserDao extends IMainDao { 

@Query("SELECT * FROM user") 
List<User> getAll(); 

//from IUserDao 
@Override 
public String getId() { 
    return ""; 
    } 
} 
+0

はこれを行いますコンパイル?私は何か似ているが、それは基本インターフェイス上の間違った注釈についての苦情とコンパイルされません。 – shelll

+0

それは私のプロジェクトでは、私はこのソリューションを投稿しない私はコンパイルします。 – issamux

関連する問題