Room Persistence: Entities and POJOs must have a usable constructor

try this:-

@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;
}

For my first question, as suggested by CommonsWare and rmlan, was to change the parameter names in my constructor to match those of the variables.

The problem with the getters was that Room uses the JavaBeans Conventions for their names, so for example my getuUsername() should have rather been getUUsername(). After I changed all of the getters to match that the build was successful.

Source: Android Developers


It simply means that you must have unannotated parameterless constructor like so

 @Ignore
public User(int uId, String uUsername, String uEmail, String 
 uPassword){
   this.uId = uId;
   this.uUsername = uUsername;
   this.uEmail = uEmail;
   this.uPassword = uPassword;
}
//parameterless constructor 
//un annotated 
public User(){

}