2016-08-05 88 views
2

我正在使用領域將我的值存儲在本地數據庫中。使用Android中的Realm更新多行表中的行

我的要求是,我需要根據某些條件更改一個字段status=1

我試過下面的方法來完成這個任務。它工作正常。

RealmResults<NotificationOrder> notificationOrders=realm 
      .where(NotificationOrder.class) 
      .equalTo(RealmConstants.TBL_NOTIFICATION_ORDER.property_id,ConstantMethod.getPreference(getActivity(),UserDefault.kPropertyId)) 
      .equalTo(RealmConstants.TBL_NOTIFICATION_ORDER.status,0) 
      .findAll(); 

    for (NotificationOrder order:notificationOrders) { 
     realm.beginTransaction(); 
     order.setStatus(1); 
     realm.commitTransaction(); 
    } 

現在可能有這樣的行1000在我的本地數據庫,並使用循環更新單列似乎不正確的方法。

所以我的問題:有沒有什麼辦法像MYSQL更新Realm中的查詢,我們可以通過單條語句更新status = 0的所有行,而不是逐個更新單行?

謝謝。

+0

目前沒有,您需要單獨更新所有對象。有一個問題在這裏跟蹤它:https://github.com/realm/realm-java/issues/762 –

回答

2

如果我知道對不對,在交易的對象應該是管理,因此

realm.executeTransaction(new Realm.Transaction() { 
    @Override 
    public void execute(Realm realm) { 
     RealmResults<NotificationOrder> notificationOrders = realm 
      .where(NotificationOrder.class) 
      .equalTo(RealmConstants.TBL_NOTIFICATION_ORDER.property_id,ConstantMethod.getPreference(getActivity(),UserDefault.kPropertyId)) 
      .equalTo(RealmConstants.TBL_NOTIFICATION_ORDER.status,0) 
      .findAll(); 
     for(NotificationOrder order : notificationOrders) { 
      order.setStatus(1); 
     } 
    } 
}); 

應該足夠了。