[解決済み] アンドロイドルームでエンティティの特定フィールドを更新する
2022-05-01 03:56:52
質問
私は新しいプロジェクトでandroid room persistence libraryを使用しています。
私はテーブルのいくつかのフィールドを更新したいと思います。
私は私のように試してみました
Dao
-
// Method 1:
@Dao
public interface TourDao {
@Update
int updateTour(Tour tour);
}
しかし、このメソッドを使用して更新しようとすると、ツアーオブジェクトの主キー値と一致するエンティティのすべてのフィールドが更新されます。
私は
@Query
// Method 2:
@Query("UPDATE Tour SET endAddress = :end_address WHERE id = :tid")
int updateTour(long tid, String end_address);
これは動作していますが、私の場合、エンティティに多くのフィールドがあるため、多くのクエリーが発生します。私は(すべてではない)いくつかのフィールドを更新する方法を知りたいのです。
Method 1
ここで id = 1; (id は自動生成の主キーです)。
// Entity:
@Entity
public class Tour {
@PrimaryKey(autoGenerate = true)
public long id;
private String startAddress;
private String endAddress;
//constructor, getter and setter
}
解決方法は?
<ブロッククオート私はメソッド1のようにいくつかのフィールド(すべてではない)を更新することができますどのように知りたい id = 1
使用方法
@Query
方法2で行ったように
は、私の場合、エンティティに多くのフィールドがあるため、長すぎるクエリです。
それなら、もっと小さなエンティティにしましょう。あるいは、フィールドを個別に更新するのではなく、データベースとより粗い粒度のインタラクションを持つようにします。
<ストライク つまり、Room自体には、あなたの求めるものは何もないのです。
更新日 2020-09-15 : Room は部分エンティティをサポートするようになり、このシナリオを支援することができるようになりました。参照 この回答 をご覧ください。
関連
-
Androidのadbデバイスがオフラインであることが判明
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
Androidで発生した問題、解決策とヒント
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
指定された子にはすでに親がいます。まず、その子の親に対して removeView() をコールする必要があります。
-
プロセス 'command 'F:\sdkbuild-tools', 26.0.2 AAAPT.exe' finished with non-zero exit value 1
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
AndroidでListViewを使ってカスタムテーブルを描画する
-
Androidのカラーグラデーション実装のまとめ
-
アンドロイドの遅延実行のいくつかの方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
プログラム "git.exe "を実行できない場合の正しい解決方法です。CreateProcessエラー=2
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
Android: インポートモジュールエラー Android リソースのリンクに失敗しました
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
Android studioのインストールと問題発生、Emulator: PANIC: AVDのシステムパスが見つかりません。
-
android studioが "The activity must be exported or contain an intent-filter" と表示され実行される。
-
アプリケーションがメインスレッドで過剰に作業している可能性があります。
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。