Android 对象数组的 Room 数据库嵌套对象引用

Android Room Database Nested Object Reference for array of objects

我有一个 class 结构

Class x { 
    int a;
    int b;
    Y[] yList;
}
Class Y {
    int m;
    int n;
}

我正在使用数据绑定、Room 和 Dagger。我收到编译错误 'cannot find class 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.

How to reference nested array of objects for Room Database without foreign key?

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

  • 定义两个带有 @TypeConverterstatic 方法,通过使用 JSON)

  • 在某处使用 @TypeConverters 注册 class 持有这些方法(例如,在您的 RoomDatabase subclass 上)

这使用集合 classes(例如,ListSet)。我猜它适用于 Java 数组 (Y[]),尽管我没有尝试过。