1

J'utilise la bibliothèque persistante Room. J'ai l'obligation d'ajouter deux clés primaires dans une table et une de la clé primaire devrait être incrémentation automatique. Je ne connais pas la syntaxe exacte pour y parvenir. Ci-dessous ma classe de modèle:Comment incrémenter automatiquement la clé primaire lors de l'utilisation de clés composites dans la bibliothèque persistante Room?

@Entity(tableName = "newsPapers", primaryKeys = 
{"news_paper_id","news_paper_name"}) 
public class SelectNewsModel { 

private int news_paper_id; 

@ColumnInfo(name = "image_url") 
private String imageUrl; 

@ColumnInfo(name = "news_paper_name") 
private String newsPaperName; 
} 

Je souhaite que "news_paper_id" soit automatiquement incrémenté. Comment puis-je le faire?

+0

Pourquoi avez-vous besoin de deux clés primaires? si les deux sont identiques? –

+0

@KuLdipPaTel Désolé, je n'ai pas compris votre question. Je veux deux clés primaires, qui ne sont pas identiques. l'un est "news_paper_id" et l'autre est "news_paper_name". Et je veux que "news_paper_id" soit automatiquement incrémenté! J'espère que cette explication clarifie votre doute. –

+0

vérifiez encore mes ans et essayez comme ça. –

Répondre

1

J'ai trouvé un autre moyen de contourner ce problème car selon mes connaissances après certains R & D, nous ne pouvons pas avoir de propriété d'incrémentation automatique dans les clés primaires composites. J'ai donc utilisé des indices et une contrainte unique ici car Room n'a pas de contrainte UNIQUE directe jusqu'à maintenant. Voici donc mon code de fonctionnement:

@Entity(tableName = "newsPapers", indices = {@Index(value = 
     {"news_paper_name"}, unique = true)}) 
public class SelectNewsModel { 

    @PrimaryKey(autoGenerate = true) 
    private int news_paper_id; 

    @ColumnInfo(name = "image_url") 
    private String imageUrl; 

    @ColumnInfo(name = "news_paper_name") 
    private String newsPaperName; 
}