web-dev-qa-db-ja.com

Android Roomの主キーとして文字列を使用することは可能ですか?

私はJavaバックエンドサーバーでuuidを使用しています。そのため、部屋でuuidを使用する必要がありますAndroidエンティティが正しく同期されていることを確認します。 of Android database および Androidの主キーとしてのテキスト のテキストフィールドに主キーを適用することは可能ですか。何かを作成したいこのような

@Entity(tableName = CrewColumns.TABLE_NAME)
@TypeConverters(BigDecimalConverter::class)
@JsonIgnoreProperties(ignoreUnknown = true)
class Crew() {
    constructor (uuid: String) : this() {
        this.uuid = uuid;
    }

    /**
     * The unique ID of the item.
     */
    @PrimaryKey
    @ColumnInfo(name = CrewColumns.UUID)
    var uuid: String = ""
    @ColumnInfo(name = CrewColumns.NAME)
    var name: String = ""
}

ルーム(DAOなど)に問題がありますか?ありがとうございました。

13
ThomasEdwin

Androidアノテーションから@NonNullでそのフィールドに注釈を付ける必要があります。これを行うには、この行をアプリのGradleに追加します。

compile 'com.Android.support:support-annotations:26.1.0'

そして、コードでは次のように簡単です:

@Entity
public class User {
    @PrimaryKey
    @NonNull
    private String email;

    ...
}
22
juanmeanwhile