基本的に私が理解できない2つのことがあります:オブジェクトを持つオブジェクトとオブジェクトのリストを持つオブジェクトAndroidルームにオブジェクトを保存する方法は?
サーバからオブジェクトのリストを受け取ったといいます。それらのそれぞれは、次のようになります。フィールドのように、これらの2つのオブジェクトを持つ
@Entity
public class BigObject {
@PrimaryKey
private int id;
private User user;
private List<SmallObject> smallObjects;
}
:
@Entity
public class User {
@PrimaryKey
private int id;
private String name;
@TypeConverters(GenderConverter.class)
public MyEnums.Gender gender;
}
@Entity
public class SmallObject {
@PrimaryKey (autoGenerate = true)
private int id;
private String smallValue;
}
彼らはこれよりも複雑なので、ルームが示唆するように、私は@TypeConvertersを使用することはできません。
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
このデータ構造をルームに保存するにはどうすればよいですか?
一般に、エンティティはRoom内の他のエンティティを個別にまたはリストとして保持しません。彼らは他のエンティティに*外部キー*を保持するかもしれません。また、ビューモデルのような他の構造は、必要なエンティティを保持できます。だから、 'BigObject'は' smallObjects'を取り除き、 'user'を' userId'に置き換える必要があります。 'User'と' SmallObject'は 'BigObject'に外来キーを返します。次に、 '@ Query' DAOメソッドから、' BigObject'、関連する 'User'、および関連する' SmallObjects 'を取得するビューモデルまたは何かを設定します。 – CommonsWare