2017-05-24 4 views
1

Ich bin mit dem Problem konfrontiert, die maximalen ID-Werte abzufragen und auch die Daten auf die maximale ID zu aktualisieren.Wie erhalten Sie die maximalen ID-Werte und aktualisieren Sie die Daten auf die ID?

Im obigen Code Inkrementieren ich den ID-Wert für jede Transaktion. Ist es möglich, die maximale ID-Werte aus der Realm-Datenbank zu erhalten und müssen die Werte für die maximale ID aktualisieren. Bitte helfen Sie mir, wie das zu lösen.

+0

https://realm.io/docs/java/latest/#auto-incrementing-ids kann helfen. – beeender

Antwort

5

Sie können so etwas wie dies versuchen:

realm.executeTransaction(new Realm.Transaction() { 
    @Override 
    public void execute(Realm realm) { 
     // Get the current max id in the EntityName table 
     Number id = realm.where(EntityName.class).max("id"); 
     // If id is null, set it to 1, else set increment it by 1 
     int nextId = (id == null) ? 1 : id.intValue() + 1; 
    } 
}); 
+0

Das 'max()' muss in einer Transaktion aufgerufen werden, um sicherzustellen, dass kein anderer Thread es gleichzeitig erhöht. Könnten Sie bitte Ihre Antwort bearbeiten, um den Code in eine Transaktion zu stellen? – beeender

+0

@beeendeder danke für den Vorschlag, ich habe die Antwort entsprechend bearbeitet. –

1

ich diese Methode versucht

int key; 
key = realm.where(DetailsModel.class).max("id").intValue() + 1; 

Diese Methode funktioniert ...

0

int maxID = realm.where(DetailsModel.class).max("id").intValue(); 

jetzt versuchen können Sie Inkrementiere den maximalen ID-Wert und verwende ihn es

int id = maxID + 1; 
Verwandte Themen