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 "";
}
}