2017-07-14 8 views
4

私はそれを解決する方法がわからない問題に遭遇しました。私が現在取り組んでいるプロジェクトには、バックエンドに格納されたデータとローカルデータベースのデータから部分的に構成されたモデルがあります。 それでは、私はアーカイブにしようとしていても、そのようなものです:Androidルームの一部を更新して終了する場合

記事:[情報のバンチ] & [ブール購読]

加入フィールドは、デバイスバインドされ、バックエンド上の任意のデータを反映してはいけません。

  • 条がローカルに存在しない:コピーを格納し、 偽
  • 条の存在に加入セットルームに以下のような場合を扱うcreateIfNotExit()メソッドのいくつかの種類を実装することが可能であれば私の質問は次のとおりです。すべての情報を更新し、 購読フラッグをそのまま

をしてください私の考えは、記事への参照を保持し、別のサブスクリプション・モデルにモデルを分割することです。この方法で私は簡単に@Update(OnConfict=Update)などを実装することができます。

私は欲しいものを実行するDAOに簡単な@Queryメソッドを実装する方法はありますか?

申し訳ありませんが、これは本当に基本的な質問ですが、このケースを扱うベストプラクティスについての資料は見つかりませんでした。

ありがとうございます!

+0

エンティティの説明を追加します。私は答えを書くためにPrimaryKeysが必要です。 – DeKaNszn

+0

さて、私はちょうどアプリを計画し始めました。この点は私がまだ理解できない問題です。><私が必要とするのは特別なものではなく、このケースの一般的な例です:) – HugoCodes

答えて

2

たとえば、あなたのエンティティは次のとおりです。

@Entity(tableName = "articles") 
public final class Article { 
    @PrimaryKey 
    public long serverId; 
    public String title; 
    public String url; 

    public boolean isSubscribed; 
} 

あなたはDAOでこのメソッドを書くことがあります。

@Query("INSERT OR REPLACE INTO articles (serverId, title, url, isSubscribed) VALUES (:id, :title, :url, 
    COALESCE((SELECT isSubscribed FROM articles WHERE id = :id), 0));") 
void insertOrUpdateArticle(long id, String title, String url); 

別のオプション - あなたのリポジトリにこのロジックを記述し、2つの単純な操作を使用:選択して、更新

+0

ちょうど私が探していたもの:-) – HugoCodes

+2

実際、私は部屋でINSERTコマンドを使用することはできません。 – HugoCodes

+0

@HugoCodesどのように部屋でinsertOrUpdateの問題を実装しましたか?アイデアやコードの例を教えてください。 – nAkhmedov

関連する問題