2017-08-13 4 views
0

私は、次のエンティティあいまいなフィールドのgetter ...ルームの永続化ライブラリ

public class User { 
    @PrimaryKey 
    private final long id; 

    private String _id; 
    private String userName; 
    private String email; 
} 

を持っている。しかし、私は次のエラーを取得します。私が直接mongodbデータベースにフックアップnode.js APIからの応答を翻訳することができるよう

Error:(18, 20) error: Ambiguous getter for Field(element=_id, name=_id, type=java.lang.String, affinity=TEXT, columnName=_id, parent=null, indexed=false). All of the following match: getId, get_id. You can @Ignore the ones that you don't want to match.

_idフィールドが含まれています。

+0

あなたのクラスリストが完成すれば、その部屋は '_'プレフィックスだけが異なる同じベース名のフィールドを好まないと思われます。フィールドを別の名前(例えば、 'mongodb_id')にするために、JSON側で、Gsonを使って' @ SerializedName'のように何かできますか?また、あなたのクラスリストは完成していますか、現在のリストには表示されないゲッターメソッドがありますか? – CommonsWare

+0

私はAPIからの応答をいつ取得するのですか?すべての_idフィールドを自動的にmongodb_idにシリアル化しますか? –

+0

はい、私はそれが可能かどうか尋ねています。 WebサービスクライアントAPIに何を使用しているのか分かりません。 GsonのようにAndroid上で動作するJSONパーサーの中には、@ SerializedNameのようなアノテーションをサポートしているため、JSONの名前とJavaのフィールド名が異なる場合があります。 – CommonsWare

答えて

1

ドキュメントごとに、すべてのフィールドにゲッターを宣言する必要があります。

@Entityアノテーションでクラスを宣言していないことがわかります。 最新のバージョンのライブラリを使用していることを確認してください。開発中であるため、いくつかの重要な変更点を明らかにする必要があります。

下の例を参照してください。これは、私のために、以下のバージョンのRoomの下で動作しています。

api 'android.arch.persistence.room:runtime:1.0.0-alpha8' 

また、「alpha9」も使用できます。 これがあなたの問題を解決することを願っています。あなたがそれらを公開することができ、他の各プライベートフィールド、このエラーはフィールドのための2つのゲッターやセッターを持っている可能性があり、別の理由でセッターとゲッターを持っている必要があります

@Entity (tableName = "user") 
public class User { 

@PrimaryKey 
private int id; 

private String _id; 

@ColumnInfo(name = "user_name") 
private String userName; 

@NonNull 
private String passwrod; 

public User(String userName, @NonNull String passwrod) { 
    this.userName = userName; 
    this.passwrod = passwrod; 
} 

@Ignore 
public User() { 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

public String getPasswrod() { 
    return passwrod; 
} 

public void setPasswrod(String passwrod) { 
    this.passwrod = passwrod; 
} 

public String get_id() { 
    return _id; 
} 

public void set_id(String _id) { 
    this._id = _id; 
} 

}

2

0

getterの戻り値の型は、データ型intの属性を持つ場合、属性のデータ型と同じでなければなりません。

幸運。

関連する問題