Android Room Database嵌套对象参考对象数组

时间:2017-07-08 20:12:34

标签: android android-databinding android-room

我有一个带

的班级结构
Class x { 
    int a;
    int b;
    Y[] yList;
}
Class Y {
    int m;
    int n;
}

我正在使用数据绑定,Room和Dagger。我收到编译错误,因为'找不到类DatabindingComponent' ,可能是因为Room不允许持久化嵌套对象。要启用我使用 @Embedded 注释,但仍会出现相同的错误。但是如果我使用 @Ignore 注释来指示不处理此字段的Room;汇编正在顺利进行。

如何为没有外键的Room Database引用嵌套的对象数组?

请参阅 https://developer.android.com/topic/libraries/architecture/room.html#no-object-references https://developer.android.com/reference/android/arch/persistence/room/Ignore.html https://developer.android.com/reference/android/arch/persistence/room/Embedded.html

1 个答案:

答案 0 :(得分:3)

  

如何在没有外键的情况下引用Room数据库的嵌套对象数组?

如果您不希望Y成为具有自己的表的@Entity,我知道的唯一选择是使用@TypeConverters

  • 使用static定义两个@TypeConverter方法,通过使用JSON将Y[]转换为某种基本类型(例如,String

  • 在某处使用@TypeConverters注册保存这些方法的类(例如,在RoomDatabase子类上)

这可以使用集合类(例如ListSet)。我猜它适用于Java数组(Y[]),虽然我还没有尝试过。