Подтвердить что ты не робот

Постоянство помещения: сущности и POJO должны иметь полезный конструктор

Я пытаюсь добавить базу данных в свое приложение для Android через библиотеку "Сохранение комнаты". Я правильно выполнил инструкции, но при компиляции a получим вышеприведенную ошибку. Кроме того, Комната не может найти моих получателей, хотя я могу ясно видеть их все в моем коде. Любая помощь приветствуется. Спасибо заранее.

Здесь мой код для объекта:

@Entity(tableName = "users", indices = @Index(value = "username", unique = true))
public class User {

@NonNull
public String getuId() {
    return uId;
}

public void setuId(@NonNull String uId) {
    this.uId = uId;
}

public String getuUsername() {
    return uUsername;
}

public void setuUsername(String uUsername) {
    this.uUsername = uUsername;
}

@NonNull
public String getuPassword() {
    return uPassword;
}

public void setuPassword(@NonNull String uPassword) {
    this.uPassword = uPassword;
}

public String getuEmail() {
    return uEmail;
}

public void setuEmail(String uEmail) {
    this.uEmail = uEmail;
}

@NonNull
@PrimaryKey
@ColumnInfo(name = "user_id")
private String uId;

@ColumnInfo(name = "username")
private String uUsername;

@NonNull
@ColumnInfo(name = "password")
private String uPassword;

@ColumnInfo(name = "email")
private String uEmail;


@Ignore
public User(String userName, String email, String password){
    uId = UUID.randomUUID().toString();
    uUsername = userName;
    uEmail = email;
    uPassword = password;
}

public User(@NonNull String id, String username, String email,@NonNull String password){
    this.uId = id;
    this.uUsername = username;
    this.uPassword = password;
    this.uEmail = email;
}
}

И ошибка, которую я получаю:

Ошибка: (14, 8): Сущности и Pojos должны иметь полезный публичный конструктор. У вас может быть пустой конструктор или конструктор, параметры которого соответствуют полям (по имени и типу).     Пробовали следующие конструкторы, но они не соответствовали:     Пользователь (java.lang.String, java.lang.String, java.lang.String, java.lang.String): [id: null, username: null, email: null, password: null]

Также это:

Ошибка: (53, 20) error: Не удается найти getter для поля. Ошибка: (56, 20) error: Не удается найти getter для поля. Ошибка: (60, 20) ошибка: не удается найти геттер для поля. Ошибка: (63, 20) ошибка: не удается найти getter для поля.

4b9b3361

Ответ 1

Я публикую ответ здесь:

Мой первый вопрос, предложенный CommonsWare и rmlan, состоял в том, чтобы изменить имена параметров в моем конструкторе, чтобы они совпадали с именами переменных.

Проблема с геттерами заключалась в том, что Room использует для своих имен соглашения JavaBeans, поэтому, например, мой getuUsername() должен был быть getUUsername(). После того, как я изменил все получатели, чтобы соответствовать, что сборка была успешной. Источник: Соглашения разработчиков Android и JavaBeans

Ответ 2

попробуйте это: -

@Ignore
public User(int uId, String uUsername, String uEmail, String 
 uPassword){
   this.uId = uId;
   this.uUsername = uUsername;
   this.uEmail = uEmail;
   this.uPassword = uPassword;
}

public User(String uUsername, String uEmail, String 
 uPassword){
   this.uUsername = uUsername;
   this.uEmail = uEmail;
   this.uPassword = uPassword;
}