我遇到了一个问题,我无法找到适用于Android的Room和自动生成主键的任何文档。
我有一个看起来像这样的实体类:
@Entity
public class Preference {
@PrimaryKey(autoGenerate = true)
private int id;
public void setId(int id) {
this.id = id;
}
}
当我手动设置id时,这工作正常,但是当我没有设置主键时,我收到关于主键为null的错误。查看自动生成的文件,我无法看到它会自动递增主键。
所以我想我的问题是这样的:你可以用setter自动生成私有成员的主键吗?或者我需要在setter中手动自动生成我的密钥?
答案 0 :(得分:6)
好的,所以这段代码由于成员为null而不能生成id成员我要么必须将其设置为Integer对象,在这种情况下,当成员等于null时,它将自动生成一个新的id ,或者,我需要在初始化对象时将其设置为等于0。
我已将其设置为整数,可以完美修复我的问题。
@Entity
public class Preference {
@PrimaryKey(autoGenerate = true)
private Integer id;
public void setId(Integer id) {
this.id = id;
}
}