我有一个带
的班级结构Class x {
int a;
int b;
Y[] yList;
}
Class Y {
int m;
int n;
}
我正在使用数据绑定,Room和Dagger。我收到编译错误,因为'找不到类DatabindingComponent' ,可能是因为Room不允许持久化嵌套对象。要启用我使用 @Embedded 注释,但仍会出现相同的错误。但是如果我使用 @Ignore 注释来指示不处理此字段的Room;汇编正在顺利进行。
请参阅 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
答案 0 :(得分:3)
如何在没有外键的情况下引用Room数据库的嵌套对象数组?
如果您不希望Y
成为具有自己的表的@Entity
,我知道的唯一选择是使用@TypeConverters
:
使用static
定义两个@TypeConverter
方法,通过使用JSON将Y[]
转换为某种基本类型(例如,String
)
在某处使用@TypeConverters
注册保存这些方法的类(例如,在RoomDatabase
子类上)
这可以使用集合类(例如List
,Set
)。我猜它适用于Java数组(Y[]
),虽然我还没有尝试过。