J'obtiens cette erreur sur ce morceau de code. You must annotate primary keys with @NonNull. "uidString" is nullable.
Lorsque je l'annote avec @NonNull et @PrimaryKey, An entity must have at least 1 field annotated with @PrimaryKey
Quoi de neuf?
import androidx.annotation.NonNull; import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.PrimaryKey; import java.util.UUID; @Entity(tableName = "player_profiles") public class PlayerGameProfile implements Parcelable { @PrimaryKey public String uidString = UUID.randomUUID().toString(); @ColumnInfo(name = "name") public String name;
4 Réponses :
Vous pouvez essayer de lier la clé primaire avec l'entité comme ceci:
@NonNull public String uidString = UUID.randomUUID().toString();
Après cela, @NonNull
votre clé primaire avec @NonNull
dans la classe ci-dessous.
@Entity(tableName = "player_profiles", primaryKeys = { "uidString" })
:( obtient toujours la deuxième erreur concernant au moins 1 clé primaire
Assurez-vous également d'essayer l'autre package d'importation pour NonNull mentionné dans mon commentaire à OP: import android.support.annotation.NonNull
Pour Java, vous devez annoter avec @android.support.annotation.NonNull
Supprimez l'autre importation NonNull que vous utilisez encore et changez-la en
@PrimaryKey @NonNull
Ensuite, utilisez les deux annotations
import android.support.annotation.NonNull;
vérifiez la sensibilité à la casse, il doit être "@NonNull" et non "@Nonnull" import androidx.annotation.NonNull;
C'est en fait ce que dit le texte de la question.
Dans mon cas, j'avais:
@PrimaryKey @NonNull var reasonId: String = Constants.EMPTY_STRING,
au lieu de:
@PrimaryKey @NonNull var reasonId: String? = Constants.EMPTY_STRING,
Si vous écrivez kotlin, vous ne devriez pas avoir besoin de @NonNull
condition d'utiliser le type non nullable
When I annotate it with @NonNull, An entity must have at least 1 field annotated with @PrimaryKey
avez-vous annoté avec les deux ou juste@NonNull
?Ce dernier est avec les deux. J'étais fatigué de changer l'ordre aussi
Et assurez-vous d'importer le package NonNull correct:
import android.support.annotation.NonNull;
Oui, désolé pour la pâte de code bâclée, tous sont présents. OP modifié
J'ai essayé ce que vous avez fait et je n'ai reçu aucune erreur de compilation ou de construction. Le problème est ailleurs et non avec les annotations. De plus, j'ai utilisé les annotations AndroidX et PAS les annotations de support
Avez-vous les dernières bibliothèques? selon Shankha507 fonctionne très bien (et a également essayé de permuter la position de @NonNull par rapport à @PrimaryKey). J'utilise l'
implementation 'androidx.room:room-runtime:2.2.1'
etannotationProcessor 'androidx.room:room-compiler:2.2.1'
. J'ai rencontré ce qui semblait être le même problème avec les bibliothèques antérieures.