我试图在我的 Android 应用程序中实现 Room,但出现错误 我发现 member_id 的 found 部分是 Integer,而 expected 部分是 INTEGER,但我不知道如何设置它,也不明白这两者之间有什么不同。 这是我数据库中的表 这是我的实体
@Entity(tableName = "Hierarchy")
public class Hierarchy {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
@NotNull private int id;
@ColumnInfo(name = "catagory_id")
@NotNull private Integer catagory_Id;
@ColumnInfo(name = "member_id")
@NotNull private int member_id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@NotNull
public Integer getCatagory_Id() {
return catagory_Id;
}
public void setCatagory_Id(@NotNull Integer catagory_Id) {
this.catagory_Id = catagory_Id;
}
@NotNull
public Integer getMember_id() {
return member_id;
}
public void setMember_id(@NotNull Integer member_id) {
this.member_id = member_id;
}
}
我以这种形式创建数据库
database = Room.databaseBuilder(this, MyDataBase.class, "MedicineData.db")
.createFromAsset("Database/dataset.db")
.build();
}
非常感谢你帮助我!
我试图在实体中将 int 更改为 Integer 但它不起作用。
在找到的预打包/资产数据库中,您有category_id,在预期的即
@Entity
带注释的层次结构类中,您有catagory_id
即第四个字符是 a 而不是 e。
所以可能改用:-
@Entity(tableName = "Hierarchy")
public class Hierarchy {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
@NotNull private int id;
@ColumnInfo(name = "category_id") /*<<<<<<<<<< CHANGED 4th character to e*/
@NotNull private Integer catagory_Id;
@ColumnInfo(name = "member_id")
@NotNull private int member_id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@NotNull
public Integer getCatagory_Id() {
return catagory_Id;
}
public void setCatagory_Id(@NotNull Integer catagory_Id) {
this.catagory_Id = catagory_Id;
}
@NotNull
public Integer getMember_id() {
return member_id;
}
public void setMember_id(@NotNull Integer member_id) {
this.member_id = member_id;
}
}
您可能还希望将类别的所有用途更改为类别。
您只需要将变量 member_id 的类型从 int 更改为 Integer,因为您将 getter 和 setter 作为 Integer 传递,并且您在模型声明中将 member_id 提供给 int 值,因此更改代码如下定义,
@ColumnInfo(name = "member_id")
@NotNull private Integer member_id;
关于 int 和 Integer 之间的区别的问题是 int 简单地表示一个整数,而 Integer 具有额外的属性和方法并且是包装类作为 java API 中包含的组件,而不像 int 是java.