DAO 方法只能使用 following:Insert、Delete、Query、Update 之一进行注释
DAO method can be annotated with only one of the following:Insert,Delete,Query,Update
我是 Room 库的新手,想制作简单的项目。
这是实体 class。
@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;
}
}
这里是道 class.
@Dao
public interface UserDao extends Dao {
@Query("SELECT * FROM user")
List<User> getAll();
@Insert
void insert(User users);
}
这是 AppDatabase class。
@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
我搜索它但找不到任何东西。感谢您的任何建议。
您的 DAO 接口不应扩展 Dao 接口。
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Insert
void insert(User users);
}
为了我的需要,我使用了这样的摘要 class:
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 "";
}
}
我是 Room 库的新手,想制作简单的项目。
这是实体 class。
@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;
}
}
这里是道 class.
@Dao
public interface UserDao extends Dao {
@Query("SELECT * FROM user")
List<User> getAll();
@Insert
void insert(User users);
}
这是 AppDatabase class。
@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
我搜索它但找不到任何东西。感谢您的任何建议。
您的 DAO 接口不应扩展 Dao 接口。
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Insert
void insert(User users);
}
为了我的需要,我使用了这样的摘要 class:
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 "";
}
}