Я хочу создать базу данных в своем приложении, используя room. Я создал все необходимые классы. Мой запрос на добавление работает нормально. Но когда я использую запрос выбора и пытаюсь получить некоторые данные из базы данных, он возвращает нулевой объект. Я не вижу в этом проблемы. Моя сущность - это класс пользователя. Я создал User dao, User репозиторий и User viewmodel. В своем фрагменте я хочу получить данные из базы данных. Часть моего фрагмента:
private boolean invalidPass(String user, String pass) {
boolean invalid = false;
LiveData<User> userLog = nUserViewModel.getUserByPhone(user);
if (!userLog.getValue().getPass().equals(pass))
invalid = true;
return invalid;
}
Мой дао здесь:
@Dao
public interface UserDao {
@Insert
public void addUser(User user); //this works fine
@Query("SELECT * from user_info") //does not work
List<User> getAllUsers();
@Query("SELECT * from user_info where phone= :phoneN") //does not work
public LiveData<User> getUserByPhone(String phoneN);
@Query("UPDATE user_info SET pass = :passN where phone= :phoneN")
public void updatePassword(String passN, String phoneN);
@Delete
public void deleteUser(User user);
}
Репозиторий:
public LiveData<User> getUserByPhone(String phone) {
userNow = mUserDao.getUserByPhone(phone);
return userNow;
}
модель просмотра:
public LiveData<User> getUserByPhone(String phone) {
return mRepository.getUserByPhone(phone);
}
Ошибка показывает:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String <package name>.User.getPass()' on a null object reference
Пользовательский объект:
public User(@NonNull String phone, String name, String dob, String address, String email, String pass) {
this.phone=phone;
this.name = name;
this.dob=dob;
this.address=address;
this.email=email;
this.pass=pass;
}
@NonNull
public String getPhone() {
return phone;
}
public void setPhone(@NonNull String uPhone) {
this.phone = uPhone;
}
public String getName() {
return name;
}
public void setName(String uName) {
this.name = uName;
}
public String getDob() {
return dob;
}
public void setDob(String uDOB) {
this.dob = uDOB;
}
public String getAddress() {
return address;
}
public void setAddress(String uAddress) {
this.address = uAddress;
}
public String getEmail() {
return email;
}
public void setEmail(String uEmail) {
this.email = uEmail;
}
public String getPass() {
return pass;
}
public void setPass(String uPass) {
this.pass = uPass;
}