【发布时间】:2022-06-15 19:35:36
【问题描述】:
我的道
@Dao
public interface DrugDao {
@Query("SELECT * FROM drugs")
List<Drug> getDrugList();
@Insert
void insertDrug(Drug drug);
@Update
void updateDrug(Drug drug);
@Delete
void deleteDrug(Drug drug);
}
我的实体
@Entity(tableName = "drugs")
public class Drug {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "dose")
private int dose;
@ColumnInfo(name = "frequency")
private String frequency;
@ColumnInfo(name = "checkBoxId")
private String checkBoxId;
@ColumnInfo(name = "checkBoxStatus")
private boolean checked;
数据库类
@Database(entities = Drug.class, exportSchema = false, version = 1)
public abstract class DrugDatabase extends RoomDatabase {
private static final String DB_NAME= "drug_db";
private static DrugDatabase instance;
public static synchronized DrugDatabase getInstance(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(), DrugDatabase.class, DB_NAME)
.fallbackToDestructiveMigration()
.build();
}
return instance;
}
public abstract DrugDao drugDao();
}
我这里有两个类,一个是道,一个是对象。目标是将对象存储在数据库中。由于某种原因,Dao @Query 无法访问对象中定义的表名。我在“药物”上收到错误,因为无法解析符号“药物”。
【问题讨论】:
-
您是否将药物实体添加到数据库实现中?
-
我的格式可能不好,但我将数据库类粘贴到问题中。我想我有。
-
您是否在 Drug 实体中为其字段创建了 getter、setter ?
-
是的,我没有在此处包含它们,因为我认为它们没有必要。我的 IDE 现在唯一的错误/红色标记是 Dao 中的表名。
标签: android