ошибка: если первичный ключ аннотирован с помощью autoGenerate, его тип должен быть int, Integer, long или Long - PullRequest
0 голосов
/ 28 ноября 2018

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

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;

@Entity(tableName = "messages")
public class Message {

@PrimaryKey(autoGenerate = true)


@ColumnInfo(name = "message_date")
private String date;

@ColumnInfo(name = "message_timeHour")
private String timeHour;

@ColumnInfo(name = "message_timeMinute")
private String timeMinute;

@ColumnInfo(name = "message_contactName")
private String contactName;

@ColumnInfo(name = "message_text")
private String text;

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getTimeHour() {
    return timeHour;
}

public void setTimeHour(String timeHour) {
    this.timeHour = timeHour;
}

public String getTimeMinute() {
    return timeMinute;
}

public void setTimeMinute(String timeMinute) {
    this.timeMinute = timeMinute;
}

public String getContactName() {
    return contactName;
}

public void setContactName(String contactName) {
    this.contactName = contactName;
}

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}
}

Что это значит и как решить?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

У вас должен быть хотя бы один первичный ключ для вашего @ Entity.

@PrimaryKey(autoGenerate = true)

Вы должны использовать его как

@PrimaryKey(autoGenerate = true) private int id;

Кроме того, у вас должен быть установщик для этой переменной id, поэтому, когда Room необходимо установить значение первичного ключа, он будет использовать ваш метод setter, поскольку ваша переменная id является закрытой.Итак, теперь в этом случае вам вообще не нужно устанавливать идентификатор.Комната позаботится об этом.

0 голосов
/ 28 ноября 2018

Вам необходимо использовать свойство autoGenerate

Ваша аннотация первичного ключа должна быть такой:

@PrimaryKey(autoGenerate = true)

Ссылка здесь

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