我正在将Room Entity框架用于名为User的类,并将用户ID设置为自动生成。
我尝试使用ONLY构造函数创建用户对象,因为Room无法在多个构造函数之间进行选择。
我的课看起来像这样:
@Entity
public class User {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "user_id")
private Integer userID;
@ColumnInfo(name = "first_name")
private String firstName;
@ColumnInfo(name = "last_name")
private String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public Integer getUserID() {
return userID;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setUserID(Integer userID) {
this.userID = userID;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
对象创建如下:
User user = new User("Gabriel", "Johnson");
我希望ID为1,因为我猜它会随着创建的每个用户的增加而从1开始递增。但是ID为null,则永远不会发生自动生成。
答案 0 :(得分:3)
仅当将对象插入数据库时,Room才会自动生成密钥-即使那样,它也不会在您插入的对象中填写密钥。
仅应期望在从数据库读取实体时填写userId。