2016-08-14 5 views
4

In Realm-Datenbank-Lösung Wie kann ich das neueste Element mit der besten Leistung erhalten?Java Realm neuste eingefügte Artikel

dieser Code ist meine Lösung zu lösen, dass

List<Transactions> allItems = realm.where(Transactions.class).findAll().sort("createdAt", Sort.DESCENDING); 
String    latestId = allItems.get(0).getId(); 
getUserLatestTransactions(Integer.parseInt(latestId)); 

gibt es eine andere Lösung oder Realm das hat implementieren?

+1

Ich habe auf die harte Tour gelernt, dass das Ausblenden von ganzen Zahlen in Strings eine schreckliche Idee ist !! Verwenden Sie Longs – Eenvincible

Antwort

8

ist das, was man tun könnte - angesichts Realm liest keine Kopien machen, das heißt, es ist nicht teuer und wird nicht Ihren UI-Thread beeinflusst viel, nachdem Ihren Einzelteil zu speichern, können Sie findAllSorted("createdAt) oder findAllSorted("id"), dann letzten id finden mit last() Methode wie folgt:

//after commitTransaction, 

RealmResults<Transactions> allTransactions = realm.where(Transactions.class).findAllSorted("createdAt"); 

//If you have an incrementing id column, do this 
long lastInsertedId = allTransactions.last().getId(); 

Dies sollte Ihnen die letzte eingefügte ID des gegebenen Modells geben.

Es ist auch wichtig zu erwähnen, dass, damit dies funktioniert, Sie eine Spalte in Ihrem Modell haben müssen, wie diese mit id;

public class Transactions extends RealmObject{ 

    @PrimaryKey @Index 
    private long id; 

    //getters and setters accordingly! 
} 

Ich hoffe, das hilft! Viel Glück und gute Programmierung!

UPDATE

Ich habe erkannt, dass realm.copyToRealm(obj) ein Objekt zurückgibt!

Das heißt, Sie dies einfach tun können:

realm.beginTransaction(); 
Transactions transaction = realm.copyToRealm(newTransaction); 
long id = transaction.getId(); 
realm.commitTransaction(); 

Bitte versuchen Sie dies und lassen Sie es mich wissen!

+0

Danke Sir, keine andere Lösung, um das zu bekommen, ohne alle Daten zu Liste zu holen? wie mit mysql Lösung 'last_insert_id()' ja? –

+0

Ich habe im Moment keine andere Lösung gesehen, aber ich werde weiter suchen und Sie aktualisieren, wenn ich einen finde; – Eenvincible

+0

dann ich stimme deinen Beitrag, danke :) –

0

Wenn Id eindeutig ist & Incremental können Sie nach ihm sortieren oder die Zeit als Long-Wert und das gleiche wie oben, sollte es funktionieren. Hier

Verwandte Themen