Первичный ключ не генерируется автоматически с использованием Entity Room - PullRequest
0 голосов
/ 18 апреля 2019

Я использую инфраструктуру Room Entity для класса с именем User, и я устанавливаю идентификатор пользователя для автоматического создания.

Я попытался создать пользовательский объект, используя конструктор 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");

Я ожидал, что идентификатор будет равен 1, так как я предполагаю, что он будет увеличиваться с каждым созданным пользователем, начиная с 1. Но идентификатор равен нулю, автогенерация никогда не происходит.

1 Ответ

3 голосов
/ 18 апреля 2019

Room автоматически генерирует ключ, когда объект вставляется в базу данных - даже тогда он не заполняет ваш ключ в вставленном вами объекте.

Вы должны ожидать, что только userId будет заполненпри чтении объекта из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...