Android DAO方法只能使用以下选项之一进行注释:插入、删除、查询、更新

Android DAO方法只能使用以下选项之一进行注释:插入、删除、查询、更新,android,android-room,Android,Android Room,我是新的房间图书馆,想做一个简单的项目 这里是实体类 @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 =

我是新的房间图书馆,想做一个简单的项目

这里是实体类

@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);

}
这是我的主要活动

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


        AppDatabase.getAppDatabase(this).userDao().insert(user);
        AppDatabase.getAppDatabase(this).userDao().getAll();
但是当我运行上面的代码时。我得到了下面的错误

错误:(14,8)错误:DAO中的抽象方法必须用 接口android.arch.persistence.room.Query和接口 android.arch.persistence.room.Insert


我搜索了一下,但什么也找不到。谢谢你的建议。

你的DAO接口不应该扩展DAO接口

@Dao
public interface UserDao {

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

    @Insert
    void insert(User users);

}
@Dao
公共接口UserDao{
@查询(“从用户中选择*)
List getAll();
@插入
无效插入(用户);
}

出于我的需要,我使用了如下抽象类:

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 "";
  }
}
公共接口IMainDao{
字符串getId();
}
@刀
公共抽象类UserDao扩展了IMainDao{
@查询(“从用户中选择*)
List getAll();
//来自IUserDao
@凌驾
公共字符串getId(){
返回“”;
}
}

这是否编译?我想要类似的东西,但它不会编译时抱怨基本接口上的注释错误。它会在我的项目中编译,否则我不会发布此解决方案。
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 "";
  }
}