Не удается сохранить модель данных, содержащую Список <Модель> с комнатой ORM Kotlin

У меня проблема с Room ORM, работающим над Kotlin. Моя задача – иметь возможность сохранять и получать модели данных RouteTemplateModel, которая содержит список адресов типа AddressModel и объекта класса RouteModel, который содержит заголовок конкретного маршрута. Вот мой код:

AddressModel.kt

@Entity(foreignKeys = arrayOf( ForeignKey(entity = RouteModel::class, parentColumns = arrayOf("routeId"), childColumns = arrayOf("parentId")))) data class AddressModel( @PrimaryKey(autoGenerate = true) var addressId: Long, var parentId: Long, var street: String, var house: String, var entrance: String, var title: String){ constructor(): this(0, 0, "", "", "", "") } 

RouteModel.kt

 @Entity data class RouteModel( @PrimaryKey(autoGenerate = true) var routeId: Long, var title: String) { constructor() : this(0, "") } 

Вот мои простые модели, я нашел в документации Room, что для создания отношений между моделями мне нужно использовать @ForeignKey и @Relation

Поэтому с примерами кода в документах и ​​учебниках я создаю RouteTemplateModel который содержит объект RouteModel и список AddressModels . Вот класс

RouteTemplateModel

 class RouteTemplateModel{ private var id: Long = 0 @Embedded private var routeModel: RouteModel = RouteModel() @Relation(parentColumn = "routeId", entityColumn = "parentId") private var addressList: List<AddressModel> = listOf() constructor() constructor(id: Long, routeModel: RouteModel, title: String, addressList: List<AddressModel>){ this.id = id this.routeModel = routeModel this.addressList = addressList } fun getId(): Long{ return id } fun getRouteModel(): RouteModel{ return routeModel } fun getAddressList(): List<AddressModel>{ return addressList } fun setId(id: Long){ this.id = id } fun setRouteModel(routeModel: RouteModel){ this.routeModel = routeModel } fun setAddressList(addressList: List<AddressModel>){ this.addressList = addressList } } 

Так что же проблема? Я получаю такие ошибки:

Ошибка: столбцы, возвращаемые запросом, не имеют полей [id] в com.innotech.webcab3kotlin.model.RouteTemplateModel, даже если они аннотируются как непустые или примитивные. Столбцы, возвращаемые запросом: [routeId, title]

А также

Ошибка. Тип параметра должен быть классом, аннотированным с @Entity или его набором / массивом.

Это реальная проблема, потому что если я RouteTemplateModel исправить первую ошибку и аннотировать в переменной RouteTemplateModel id, чтобы вернуть этот столбец, мне нужен аннотированный класс как Entity (как во второй ошибке), но когда я это делаю, я получаю сообщение об ошибке

Ошибка: сущности не могут иметь отношения.

Вот AppDatabase.kt

 @Database(entities = arrayOf(RouteModel::class, AddressModel::class), version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun getRouteDao(): RouteDao } 

и RouteDao.kt

 @Dao interface RouteDao { @Query("SELECT routeId, title FROM RouteModel") fun getAll(): List<RouteTemplateModel> @Insert fun insertAll(vararg models: RouteTemplateModel) @Delete fun delete(model: RouteTemplateModel) } 

Это действительно сбивает с толку. Пожалуйста, помогите мне)

Ваш столбец «parentId» может содержать только длинное значение, сделать его тип «Text», а затем создать TypeConverter из «List» в String и наоборот для справки, посмотрите ссылку .