Exemple de champ d'incrément automatique de Realm
je dois ajouter auto increment champ clé dans Realm
base de données dans android.
comment puis-je faire cela?
Est-ce possible?
Merci d'avance.
2 réponses
Relam
ne supporte pas actuellement l'augmentation automatique
voir ce numéro sur GitHub
, vous pouvez prendre de travailler comme ça
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// increment index
Number num = realm.where(dbObj.class).max("id");
int nextID;
if(num == null) {
nextID = 1;
} else {
nextID = num.intValue() + 1;
}
dbObj obj = realm.createObject(dbObj.class, nextID);
// ...
}
}
la liaison Java ne supporte pas encore les clés primaires, mais c'est sur la feuille de route et avec une haute priorité - voir: https://groups.google.com/forum/#!topic / realm-java /6hFqdyoH67w . Comme solution de contournement, vous pouvez utiliser ce morceau de code pour générer des clés:
int key;
try {
key = realm.where(Child_pages.class).max("id").intValue() + 1;
} catch(ArrayIndexOutOfBoundsException ex) {
key = 0; // when there is no object in the database yet
}
j'utilise singleton, factory pour la génération de clés primaires comme une solution générique avec de meilleures performances (pas besoin de requête pour max("id")
à chaque fois).
il y a une longue discussion dans Realm Git Hub si vous avez besoin de plus de contexte: Document Comment définir un ID d'incrément automatique?