2016-08-14 67 views
4

在Realm數據庫解決方案中,如何獲得最新插入項目的最佳性能?Java Realm獲取最新插入項目

這段代碼是我的解決方案,以解決

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

有沒有其他的解決方案或領域具有實現的?

+1

我學會了在字符串中隱藏整數的難題,這是一個糟糕的主意!使用多久 – Eenvincible

回答

8

這裏是你能做什麼 - 考慮境界讀作無份,這意味着它不貴,也不會影響你的UI線程多,存儲您的物品後,就可以findAllSorted("createdAt)findAllSorted("id"),然後找到使用last()最後一個ID方法是這樣的:

//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(); 

這應該會給你最後插入給定模型的ID。

還有一點很重要的一點,爲了這個工作,你必須在你的模型中有一個像這樣的id列;

public class Transactions extends RealmObject{ 

    @PrimaryKey @Index 
    private long id; 

    //getters and setters accordingly! 
} 

我希望這有助於!祝你好運,快樂的編碼!

UPDATE

我剛剛意識到realm.copyToRealm(obj)返回一個對象!

這意味着你可以簡單地這樣做:

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

請試試這個,讓我知道!

+0

謝謝先生,沒有任何其他解決方案來獲取,而不是所有的數據到列表?像使用mysql解決方案'last_insert_id()'是? –

+0

我目前還沒有看到任何其他的解決方案,但我會繼續搜索,如果我找到一個將會更新你; – Eenvincible

+0

然後我投票你的帖子,謝謝:) –

0

如果Id是唯一的&遞增,你可以按它排序或把時間作爲長的價值,並做與上面的一樣,它應該工作。