2017-04-18 3 views
0

新しいバージョンのRaizlabs DBFlowと同様に、データベースの管理方法が変更されました。DBFlowトランザクションのオーバーホール - コードの書き換えが必要

今、私は読書の時間がたってから、壁に押し付けられています。私がこの記事で見てきた

public static void saveAll(Collection<? extends Model> models) { 

    TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(models))); 

} 


public static void deleteAll(Collection<? extends Model> models) { 

    TransactionManager.getInstance().addTransaction(new DeleteModelListTransaction<>(ProcessModelInfo.withModels(models))); 

} 

::私は、新しい(4.0.0-ベータ7)にDBFlow(3.0.0-beta5)の旧バージョンからの2つのメソッドを書き換える必要がありhttps://github.com/Raizlabs/DBFlow/blob/master/usage2/Migration3Guide.md#transactions-overhaulをそれでも、私はこれを行うことはできません。これは、ORMとの私の最初の接触であると私は非常によくそれを理解していない

答えて

0

正しい答えは次のとおりです。

public static void saveAll(final Collection<? extends Model> models) { 
    FlowManager.getDatabase(NAME) 
      .beginTransactionAsync(new ProcessModelTransaction.Builder<>(
        new ProcessModelTransaction.ProcessModel<Model>() { 
         @Override 
         public void processModel(Model model, DatabaseWrapper wrapper) { 
          model.save(); 
         } 
        }).addAll(models).build()) 
      .error(new Transaction.Error() { 
       @Override 
       public void onError(Transaction transaction, Throwable error) { 

       } 
      }) 
      .success(new Transaction.Success() { 
       @Override 
       public void onSuccess(Transaction transaction) { 

       } 
      }).build().execute(); 
} 

public static void deleteAll(final Collection<? extends Model> models) { 

    FlowManager.getDatabase(NAME) 
      .beginTransactionAsync(new ProcessModelTransaction.Builder<>(
        new ProcessModelTransaction.ProcessModel<Model>() { 
         @Override 
         public void processModel(Model model, DatabaseWrapper wrapper) { 
          model.delete(); 
         } 
        }).addAll(models).build()) 
      .error(new Transaction.Error() { 
       @Override 
       public void onError(Transaction transaction, Throwable error) { 

       } 
      }) 
      .success(new Transaction.Success() { 
       @Override 
       public void onSuccess(Transaction transaction) { 

       } 
      }).build().execute(); 

} 
関連する問題