无法使用会议室的实体自动生成主键

时间:2019-04-17 22:07:18

标签: android primary-key android-room

我正在将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,则永远不会发生自动生成。

1 个答案:

答案 0 :(得分:3)

仅当将对象插入数据库时​​,Room才会自动生成密钥-即使那样,它也不会在您插入的对象中填写密钥。

仅应期望在从数据库读取实体时填写userId。