Room Persistenceライブラリを介して、データベースをAndroidアプリに追加しようとしています。手順を正しく実行しましたが、コンパイル時に上記のエラーが発生します。さらに、Roomはgetterを見つけられません。私はコードでそれらのすべてを明確に見ることができますが、どんな助けでも大歓迎です。
エンティティの私のコードは次のとおりです。
@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)エラー:エンティティとPojoには、使用可能なパブリックコンストラクターが必要です。空のコンストラクターまたはパラメーターがフィールドに一致するコンストラクター(名前とタイプ)を持つことができます。次のコンストラクターを試しましたが、一致しませんでした:User(Java.lang.String、Java.lang.String、Java.lang.String、Java.lang.String):[id:null、username:null、email:null、パスワード:null]
これも:
エラー:(53、20)エラー:フィールドのゲッターが見つかりません。エラー:(56、20)エラー:フィールドのゲッターが見つかりません。エラー:(60、20)エラー:フィールドのゲッターが見つかりません。エラー:(63、20)エラー:フィールドのゲッターが見つかりません。
私はここに答えを投稿しています:
CommonsWareとrmlanが提案した最初の質問では、コンストラクターのパラメーター名を変数のパラメーター名と一致するように変更することでした。
ゲッターの問題は、Roomが名前にJavaBeans規則を使用しているため、たとえばgetuUsername()がgetUUsername()である必要があることです。ビルドが成功したことに合わせてすべてのゲッターを変更した後。ソース: Android Developers および JavaBeans Conventions
これを試して:-
@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;
}