web-dev-qa-db-ja.com

Android Room:関係をモデル化するには?

ルームでの作業を始めたばかりで、すべてが非常に直感的であるように見えますが、現在、どのように関係を処理できるかを正確に理解していません。

SQLiteはリレーショナルデータベースであるため、オブジェクト間の関係を指定できます。ほとんどのORMライブラリはエンティティオブジェクトが相互に参照することを許可していますが、Roomはこれを明示的に禁止しています。直接のリレーションシップを使用できない場合でも、Roomではエンティティ間の外部キー制約を定義できます(ソース: https://developer.Android.com/topic/libraries/architecture/room.html#no-object -references

  1. 多対多または1対多の関係をどのようにモデル化する必要がありますか?
  2. これは実際にはどのように見えますか(DAO +エンティティの例)?
25
Rene Ferrari

@Relation注釈を使用して、Roomで関係を処理できます。

関係エンティティを自動的に取得するためにPojoで使用できる便利な注釈。 Pojoがクエリから返されると、その関係もすべてRoomによってフェッチされます。

ドキュメントを参照

(Googleのドキュメントにはわかりにくい例があります。別の回答で手順と基本的な説明を書きました。 チェックアウト

25
Devrim