Постоянство комнаты: у сущностей и Pojos должен быть общедоступный конструктор - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь добавить базу данных в мое приложение для Android через библиотеку Room Persistence, и я получаю эту ошибку:

ошибка: у сущностей и Pojos должен быть доступный открытый конструктор.Вы можете иметь пустой конструктор или конструктор, параметры которого соответствуют полям (по имени и типу).Попробовал следующие конструкторы, но они не соответствовали: Пользователь (int, java.lang.String, java.lang.String, int, int, int, java.lang.String) -> [param: id -> соответствующее поле: не найдено, param: name -> совпавшее поле: не соответствует, param: пол -> совпавшее поле: не найдено, param: age -> совпавшее поле: не найдено, param: weight -> совпало поле: не найдено, param: height -> совпало поле: не найдено, param: workout -> matched field: unmatched]

Вот мой код:

    @Entity
    public class User {

@PrimaryKey
private int userId;
private String userName;
private String userGender;
private int userAge;
private int userWeight;
private int userHeight;
private String workoutPlan;


public User(int id, String name, String gender, int age, int weight, int height, String workout) {

    this.userId = id;
    this.userName = name;
    this.userGender = gender;
    this.userAge = age;
    this.userWeight = weight;
    this.userHeight = height;
    this.workoutPlan = workout;

} ...

Может кто-нибудь сказать мне, что я делаю неправильно или что я пропустил?

Ответы [ 3 ]

0 голосов
/ 15 июня 2019

Вы также можете попробовать это: -

@Ignore
public User(int userId, String userName, String userGender, int userAge, int 
      userWeight, int userHeight, String workoutPlan ) {
   this.userId = userId;
   this.userName = userName;
   this.userGender = userGender;
   this.userAge = userAge;
   this.userWeight = userWeight;
   this.userHeight = userHeight;
   this.workoutPlan = workoutPlan;
 }

 public User(String userName, String userGender, int userAge, int 
      userWeight, int userHeight, String workoutPlan) {
   this.userName = userName;
   this.userGender = userGender;
   this.userAge = userAge;
   this.userWeight = userWeight;
   this.userHeight = userHeight;
   this.workoutPlan = workoutPlan;
 }
0 голосов
/ 27 июля 2019

Я справился с этой же проблемой, просто добавив пустой конструктор.public User(){}

0 голосов
/ 20 декабря 2018

Пожалуйста, измените имена параметров так, чтобы они соответствовали атрибутам сущности.

  public User(int userId, String userName, String userGender, int userAge, int userWeight, int userHeight, String workoutPlan) {
    this.userId = userId;
    this.userName = userName;
    this.userGender = userGender;
    this.userAge = userAge;
    this.userWeight = userWeight;
    this.userHeight = userHeight;
    this.workoutPlan = workoutPlan;
  } ...

Для обеспечения устойчивости он использует соглашения JavaBeans в Room.Для получения дополнительной информации: https://developer.android.com/training/data-storage/room/defining-data#java

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