Ich muss Auto Inkrement Schlüsselfeld in Realm
Datenbank in Android hinzufügen. wie kann ich das tun? Ist das möglich?Realm Auto Increment Feld Beispiel
Vielen Dank im Voraus.
Ich muss Auto Inkrement Schlüsselfeld in Realm
Datenbank in Android hinzufügen. wie kann ich das tun? Ist das möglich?Realm Auto Increment Feld Beispiel
Vielen Dank im Voraus.
Relam
zur Zeit nicht auto_increment
dieses Problem zu sehen, unterstützt auf GitHub
Sie arbeiten rund um ähnliche
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);
// ...
}
}
Die Java-Bindung nicht Primärschlüssel nehmen kann noch nicht unterstützt, aber es ist auf der Roadmap und mit hoher Priorität - siehe: https://groups.google.com/forum/#!topic/realm-java/6hFqdyoH67w . Als Abhilfe können Sie dieses Stück Code zum Erzeugen von Tasten verwenden:
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
}
Ich benutze singleton factory for generating primary keys als eine generische Lösung mit einer besseren Leistung (keine Notwendigkeit zur Abfrage für max("id")
jedes Mal).
Es gibt eine lange Diskussion in Realm Git Hub, wenn Sie mehr Kontext benötigen: Document how to set an auto increment id?
Hallo, bitte, Kann erklären, wie man das Singleton verwendet? Ich habe nur das Wesentliche überprüft, aber ich weiß nicht, wie ich es in meinen Code einfügen soll. –
1. initialisieren Sie es, wenn App mit dem Aufruf von 'PrimaryKeyFactory.getInstance(). Initialize' beginnt, dann können Sie' PrimaryKeyFactory.getInstance(). NextKey' aufrufen, um den nächsten Schlüssel für die angegebene Klasse zu erhalten – zacheusz
So kann ich 'PrimaryKeyFactory.getInstance() hinzufügen. initialisieren "in meiner Anwendung onCreate nur einmal, oder ich sollte es in jeder Klasse hinzufügen, die ich es verwenden möchte? –
jedes Update auf das? – ralphgabb
Per cmelchior, "Auto-inkrementierte Tasten funktionieren einfach nicht in einer verteilten Einstellung, also ist es nicht etwas, was wir in der Realm-Bibliothek selbst unterstützen möchten." (https://github.com/realm/realm-java/pull/3875#issuecomment-265435130) – markproxy