У меня есть модель пользовательского интерфейса CourseUiModel, которую я использую в своей ViewModel. класс данных CourseUiModel (val Id: String, val Title: String, val Subtitle: String, // Автор ...

0
M. Azyoksul 10 Апр 2021 в 00:10

1 ответ

Лучший ответ

Я считаю, что вы хотите использовать @Relation для создания массивов, чтобы

CourseUiModel может быть: -

data class CourseUiModel(
    val Id: String,
    val Title: String,
    val Subtitle: String,
    // Author is missing

    @Relation(entity = Lesson::class,entityColumn = "CourseId",parentColumn = "Id")
    val lessonModels: List<LessonUiModel>
)

А также

LessonUiModel может быть: -

data class LessonUiModel(
    val Id: String,
    val Name: String,
    @Relation(entity = Topic::class,entityColumn = "LessonId",parentColumn = "Id")
    val topicModels: List<TopicUiModel>
)

Однако я считаю, что вышеизложенное не даст желаемых результатов. Это связано с тем, что предложение ORDER BY (порядок урока и порядок темы) не будет соблюдаться, поскольку Room, я полагаю, строит дочерние объекты из самого верхнего родительского объекта (курса), поэтому ORDER BY имеет отношение только к самому верхнему объекту (Курс).

Фактически, вы можете просто использовать ("SELECT * FROM Course WHERE courseId = :courseID:), и он извлечет те же данные.

1
MikeT 10 Апр 2021 в 02:11