我目前正在玩 Room 以便将其与 Realm 进行比较,并且我已经对最好的做事方式有很多疑问。
在我的示例应用程序中,我有一个非常简单的模型,其中一个 aPerson
可以有Cat
s 和Dog
s。
这里是java类。
Cat
和Dog
类从一个类继承Animal
:
public abstract class RoomAnimal
{
@PrimaryKey
public int id;
public int age;
public String name;
}
Cat
班级:
@Entity(tableName = "cat")
public final class RoomCat
extends RoomAnimal
{
}
Dog
班级:
@Entity(tableName = "dog")
public final class RoomDog
extends RoomAnimal
{
public enum RoomColor
{
Black, White
}
public static final class RoomColorConverter
{
@TypeConverter
public RoomColor fromString(String color)
{
return color != null ? RoomColor.valueOf(color) : null;
}
@TypeConverter
public String fromRealmColor(RoomColor color)
{
return color.toString();
}
}
@TypeConverters(RoomColorConverter.class)
public RoomColor color;
}
Person
班级:
@Entity(tableName = "person")
public final class RoomPerson
{
@PrimaryKey
public int id;
public String name;
}
我还有一个 POJO 来模拟用户可以养猫和狗的事实:
public final class RoomPersonWithAnimals
{
@Embedded
public RoomPerson person;
@Relation(parentColumn = "id", entityColumn = "id", entity = RoomDog.class)
public List<RoomDog> dogs;
@Relation(parentColumn = "id", entityColumn = "id", entity = RoomCat.class)
public List<RoomCat> cats;
}
问题是:如何保存RoomPersonWithAnimals
对象列表?
我不能Insert
在类中使用注释,Dao
因为RoomPersonWithAnimals
它不是Entity
.
对于我列表中的每个对象,我RoomPersonWithAnimals
应该运行 3 个请求吗?
- 一是为了插入
person
属性; - 一个以插入列表
cats
; - 一个以插入列表
dogs
;
预先感谢您的帮助 !