web-dev-qa-db-fra.com

Est-il possible d'utiliser String comme clé primaire dans Android Room

J'utilise uuid dans mon Java. Je dois donc utiliser cet uuid dans la salle Android pour m'assurer que les entités sont correctement synchronisées. Je suis conscient de Est-il possible d'appliquer la clé primaire sur les champs de texte dans Android et texte comme clé primaire dans Android . Je veux créer quelque chose comme ça

@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 = ""
}

Sera-ce un problème avec la chambre (DAO, etc.)? Je vous remercie.

13
ThomasEdwin

Vous devez annoter ce champ avec @NonNull à partir des annotations Android. Pour ce faire, ajoutez cette ligne au gradle de votre application:

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

Et puis dans le code c'est aussi simple que:

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

    ...
}
22
juanmeanwhile