[解決済み] ルームデータベースでのブール演算クエリのハードコード
2023-06-16 10:33:38
質問
あるユーザーとマッチする候補のリストを表示するAndroidアプリケーションを作っています。ユーザーは 1 つをクリックしてそのユーザーに「いいね」することができ、私はそれらの「いいね」をすべてローカルに保存します。
このようなマッチングリストを取得するためのクエリを書くことができます。
@Query("SELECT * FROM match WHERE liked = :liked ORDER BY match DESC LIMIT :limit")
fun getMatches(limit: Int = 6, liked: Boolean = true): Flowable<List<Match>>
これでうまくいくことがわかりました。しかし、私はこれまで
liked
を false に設定するようなシナリオは想定していないので、ブール条件をハードコードする方法があるかどうか知りたいと思っています。私が試した場合。
@Query("SELECT * FROM match WHERE liked = true ORDER BY match DESC LIMIT :limit")
コンパイル時に以下のようなエラーが発生します。
Error:(8, 0) Gradle: error: There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: true)
このブール値をクエリ文字列でハードコードするにはどうしたらよいでしょうか?
私も試してみました。
-
条件を一重引用符で囲む
-
@Query("SELECT * FROM match WHERE liked = 'true' ORDER BY match DESC LIMIT :limit")
-
どのように解決するのですか?
SQLite には boolean データ型がありません。Room はそれを
INTEGER
カラムにマッピングし
true
を
1
であり
false
から
0
.
ということで、これはうまくいくと思います。
@Query("SELECT * FROM match WHERE liked = 1 ORDER BY match DESC LIMIT :limit")
この動作は文書化されていないことを心に留めておいてください。しかし、これは変更すべきではありません - 少なくとも警報が鳴らない限りは - 変更に対処するためにマイグレーションを使用する必要があるからです。
関連
-
[解決済み] ルーム - スキーマエクスポートディレクトリがアノテーションプロセッサに提供されていないため、スキーマをエクスポートできない
-
[解決済み】Android room persistent: AppDatabase_Impl が存在しない。
-
[解決済み】Room Persistence libで主キーをautoincrementにする方法
-
[解決済み】ルームパーシスタンスライブラリ。すべて削除
-
[解決済み] Android Room - シンプルな select クエリ - メインスレッドでデータベースにアクセスできません。
-
[解決済み] Android Room - LIKEでクエリを選択する
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] Room Persistence Libraryで作成したデータベースの内容を表示する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] アンドロイドボタンセレクター