0

を使用してオブジェクト間の関係を扱うことに混乱していますAndroidルームを使用している場合、すべてのフィールド値を含めてCommentオブジェクトをデータベースに直接挿入するにはどうすればよいですか?コメントオブジェクトとしての価値?Androidルーム

私が知っているように、フィールドのreplyCommentCommentオブジェクトであるので、私は、ルームディレクトリにEntityようCommentオブジェクトを使用することはできません。そしてCommentオブジェクトに含まれている1対1リレーションと1対多リレーションのために@Relations注釈を使用してPOJOを定義しても、Commentオブジェクトを照会することはできません。

Comment外部キーを使用するなどのモデル定義を変更し、挿入アクションとクエリアクションに影響を与えるなど、他の方法はありますか?

public class Comment { 
    public String content; 
    public String id; 
    public Comment replyComment; 
    public User user; 
    public List<ImageMedia> images; 
} 

public class User{ 
    public String id; 
    public String name; 
} 

public class ImageMedia{ 
    public String key; 
    public String url; 
} 

答えて

0

コメントモデルの定義あなたは子供たちが指し示す外部キー列を持つデータベース構造をモデル化するエンティティのセットを作成する必要があります

番号を変更することを除いて、他の方法はありますバック両親へ:

  • CommentEntityは、返信用のバックCommentEntityへの外部キーを持っている
  • CommentEntityバックUserEntity
  • ImageMediaEntityへの外部キーは、私はあなたが言ったように、**ルームを新しいエンティティモデルを作成していたにもかかわらず、実際にはバックCommentEntity
+0

への外部キーを持っている**ないアイデアを持っていません私が知っているように、私はオブジェクト間の変換アクションを扱うために抽象レイヤーを作成する必要があります。また、テーブルにすべてのエンティティ値を挿入するserval insertアクションを実行し、servalクエリアクションを実行する必要がありますすべてのエンティティ値を照会して、それらをすべて私が望むコメントモデルで作成します。 –

+0

@LemonYang: "部屋には、データの挿入とクエリの手助けは全く考えられていません" - あなたはそれが何を意味するのか分かりません。あなたの '@Dao'メソッドは、複数の操作を組み合わせる' @ Transaction'メソッドで、エンティティ単位で行われます。ルームはSQLite上に薄いオブジェクトレイヤーを提供します.RetrofitはREST上に薄いオブジェクトレイヤーを提供するのと同じように、Apollo-AndroidはGraphQL上に薄いオブジェクトレイヤーを提供します。 – CommonsWare

関連する問題