0

ここで同様の質問をしましたが、満足のいく回答が得られなかったので、私の懸念を理解してください:

    1. https://stackoverflow.com/questions/14846105/insert-ot-update-using-one-of-the-field-as-key-in-greendao
    2. https://stackoverflow.com/questions/14547288/best-way-to-select-row-with-following-scenario-using-greendao

サーバーとクライアントの両方に「TARGET」というテーブルがあります。
ここで、サーバーは MySql、クライアントは Android です。

クライアント部分にgreendaoを使用したかったのですが、次のような複数のタスクがあります。

  1. いくつかのEMPLOYEE_IDを持つ従業員は、特定の日付の後にサーバーからすべてのターゲットを取得します。現在、クライアント部分にTARGETが存在する場合は更新する必要があり、そうでない場合は挿入する必要があります。これはinsertOrUpdateケースです。
  2. TARGET_IDを使用して特定のターゲットを削除します。
  3. TARGET_NAMEを使用して TARGET のリストを取得します。

質問に関するデータ:

    TABLE : TARGET
    FIELDS: TARGET_ID
            TARGET_NAME
            EMPLOYEE_ID

DaoExampleGenerator のコードの下で使用: greenDao
を使用して次のシナリオで行を選択する最良の方法は?

    private static void addTarget(Schema schema){
        Entity target = schema.addEntity("TARGET");
        target.addStringProperty("TARGET_ID").primaryKey().autoincrement();
        target.addStringProperty("TARGET_NAME");
        target.addStringProperty("EMPLOYEE_ID");
    }

以下は、私が投稿した質問に対して行ったことです。

    1. tDao.insertOrReplaceInTx(tArrayList);
       where, tArrayList is ArrayList of TARGET Object.
    2. for deleting a target using TARGET_ID, i load all the targets in     
       ArrayList<TARGET> then check TARGET_ID of each TARGET object. If 
       the TARGET_ID matches then i use, **tDao.delete(t);**
    3. for this also i do the same as (2), i load all the targets then match 
       the TARGET_NAME, If it matches then i add it to list.

上記の問題ステートメントを実装するための最良の方法を教えてください。greendaoを使用していますか?

4

2 に答える 2

1

削除クエリを作成できるはずです。GreenDaoのドキュメントが言うように:

クエリを削除する

一括削除では、個々のエンティティは削除されませんが、いくつかの基準に一致するすべてのエンティティが削除されます。一括削除を実行するには、QueryBuilder を作成し、その buildDelete メソッドを呼び出して、返された DeleteQuery を実行します。API のこの部分は将来変更される可能性があります。たとえば、便利なメソッドが追加される可能性があります。現在、一括削除はアイデンティティ スコープ内のエンティティには影響しないことに注意してください。たとえば、削除されたエンティティが以前にキャッシュされていた場合は、削除されたエンティティを「復活」させることができます。 ID によってアクセスされます (load メソッド)。ユースケースで問題が発生する可能性がある場合は、今のところ ID スコープをクリアすることを検討してください。

于 2013-12-27T19:11:23.933 に答える
0

あなたが今していることはあなたの質問に対する唯一の答えのようです...私が知る限り、greenDaoには基準によって行を取得したり、基準によって単一の行を削除したりする方法はありません... IDのみによって(ロング) ...

于 2013-03-19T11:16:22.780 に答える