問題タブ [android-room]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
28131 参照

android - インデックスの一部ではない外部キーの列に関する Android ルームのコンパイル時の警告。どういう意味ですか?

最近 Google I/O で発表された Android Architecture Components の Android の Room Persistence Library を使用しています。うまくいっているように見えますが、次のエラーが表示されます。

警告:tagId 列は外部キーを参照していますが、インデックスの一部ではありません。これにより、親テーブルが変更されるたびにフル テーブル スキャンがトリガーされる可能性があるため、この列をカバーするインデックスを作成することを強くお勧めします。

Note私のデータベースには、 、Tag、およびの3 つのテーブルがありJoinNotesTagsます。Notes to Tags は多対多の関係であるため、JoinNotesTags テーブルがマッピングを処理します。表は簡単です。

  • Note.id両方ともTag.id主キー
  • JoinNotesTags.noteId参考文献Note.id
  • JoinNotesTags.tagId参考文献Tag.id

外部キー制約はJoinNotesTagsテーブルで定義されます。参考までに、テーブルのCREATE TABLEステートメントを次に示します。JoinNotesTags

そして@Entity、そのクラスに対応する注釈は次のとおりです。

@Entity注釈からわかるように、tagId とともに複合ユニーク インデックスに含まれていnoteIdます。自動生成された json スキーマ ファイルでも、このインデックスが正しく定義されていることを確認しました。

それで、私の質問: この警告は、(まだアルファ リリースの) ルーム ライブラリの単なるバグですか?つまり、コンパイル時の分析ではtagId、この複合インデックスの一部であるという事実が欠落していますか? それとも、完全なテーブル スキャンを回避するために解決する必要があるインデックス作成の問題が本当にあるのでしょうか?

0 投票する
30 に答える
56609 参照

android - Room Persistence: エラー: エンティティと Pojos には、使用可能なパブリック コンストラクターが必要です

プロジェクトを Kotlin に変換しています。モデル (エンティティでもあります) をデータ クラスにしようとしています。Moshi を使用して、API からの JSON 応答を変換します。

次のエラーの原因でアプリをビルドできません

エンティティと Pojo には、使用可能なパブリック コンストラクターが必要です。空のコンストラクター、またはパラメーターがフィールドと (名前と型で) 一致するコンストラクターを使用できます。フィールドのセッターが見つかりません。

私が見つけた例は、これからそう遠くない

それを解決する方法についてのアイデアはありますか?

0 投票する
2 に答える
23218 参照

android - Android アーキテクチャ コンポーネント: 列挙型の使用

新しい Android Architecture Components と Room Persistence Library を使用して、Enum 型を Entity クラスの埋め込みフィールドとして使用することはできますか?

私のエンティティ(Enumが埋め込まれている):

私のタイプコンバーター:

これをコンパイルすると、次のエラーが表示されますError:(52, 12) error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).

更新 1 私の SyncEntity クラス:

0 投票する
1 に答える
743 参照

android - Observable を使用しようとしたときに Fata シグナル 11 を取得する

Kotlin、RxJava 2、および新しい Android アーキテクチャ コンポーネントを初めて試すプロジェクトに取り組んでいます。別のスレッドで Room から削除メソッドを実行しようとしていERROR: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 12673 (RxCachedThreadS)ますが、メソッドを実行すると強制終了します。私はこれらの2つのオプションを試しています:

1.

2.

これが私のDeviceViewModel.ktです(AndroidViewModelを使用)

そして私の DeviceDao.kt

これを解決しようとしましたが、成功しませんでした。どんな助けも手に入るでしょう。ありがとう!

0 投票する
14 に答える
84261 参照

android - Android ルーム永続ライブラリ - エラーの TypeConverter エラー: フィールドをデータベースに保存する方法がわかりません」

エラーのため、部屋に typeConverter を作成できません。私はドキュメントごとにすべてに従っているようです。リストをjson文字列に変換したいと思います。私のエンティティを見てみましょう:

country_langは、文字列 json に変換したいものです。そこで、次のコンバーターを作成しました: Converters.java:

問題は、 @TypeConverters({Converters.class}) を置く場所です。エラーが発生し続けます。しかし、公式には、これは typeConverter を登録するために注釈を配置した場所です:

私が得るエラーは次のとおりです。