Обработка вложенных объектов в базе данных номеров ⇐ Android
-
Anonymous
Обработка вложенных объектов в базе данных номеров
У меня есть следующие объекты, которые я хотел бы вставить в базу данных: Кажется, я не могу правильно построить вложенные объекты. Мне нужна ваша помощь в этом
[1] ArticleEntity
@Entity( tableName = "статьи", иностранные ключи = [ Внешний ключ( сущность = PartCargo::класс, родительские столбцы = ["tId"], childColumns = ["partTId"], onDelete = ForeignKey.CASCADE ) ] ) класс данных ArticleEntity( @PrimaryKey(autoGenerate = true) val tId: Long = 0, val partTId: Long = -1, val id: Строка?, имя значения: Строка?, ) : Сериализуемый [2] PartEntity
@Entity( tableName = "части", иностранные ключи = [ Внешний ключ( сущность = DetailsCargo::класс, родительские столбцы = ["tId"], childColumns = ["detailsTId"], onDelete = ForeignKey.CASCADE ) ] ) класс данных PartCargo( @PrimaryKey(autoGenerate = true) val tId: Long = 0, val DetailTId: Long = -1, val id: Строка?, имя значения: Строка?, ) : Сериализуемый класс данных PartEntity( @Встроенный валовая часть: PartCargo, @Relation(parentColumn = "tId",entityColumn = "partTId") val partArticles: List? ) : Сериализуемый [3] DetailsEntity
@Entity(tableName = "подробности") класс данных DetailsCargo( @PrimaryKey(autoGenerate = true) val tId: Long = 0, val id: Строка?, имя вал: Строка? ) : Сериализуемый класс данных DetailsEntity( @Встроенный реквизиты вал: DetailsCargo, @Relation(parentColumn = "tId",entityColumn = "detailsTId") части вал: List? ) : Сериализуемый Это DetailsDAO
@Дао Подробности интерфейсаDAO { @Insert(onConflict = OnConflictStrategy.REPLACE) забавная вставкаPartCargo (родитель: PartCargo): Long @Сделка fun InsertAllParts (parentId: Long, parts: List) { parts.forEach { часть -> val CargoParentId = InsertPartCargo(part.part.copy(detailsTId = ParentId)) part.partArticles?.let { элементы -> val Children = items.map { it.copy(partTId = CargoParentId) } InsertArticleEntities (дети) } } } @Insert(onConflict = OnConflictStrategy.REPLACE) забавная вставкаDetailsCargo(родитель: DetailsCargo): Long @Сделка забавная вставкаDetails (подробности: DetailsEntity) { val ParentId = InsertDetailsCargo(details.details) Details.parts?.let { элементы -> InsertAllParts (parentId, элементы) } } @Сделка @Query("ВЫБРАТЬ * ИЗ подробностей WHERE :id = id") весело getDetails(id: String): DetailsEntity? } Теперь при создании приложения я получаю следующую ошибку:
Невозможно найти столбец дочерней сущности `detailsTId` в PartEntity. [*]Правильно ли построены мои объекты? [*]Если нет, то какое решение? Заранее спасибо
У меня есть следующие объекты, которые я хотел бы вставить в базу данных: Кажется, я не могу правильно построить вложенные объекты. Мне нужна ваша помощь в этом
[1] ArticleEntity
@Entity( tableName = "статьи", иностранные ключи = [ Внешний ключ( сущность = PartCargo::класс, родительские столбцы = ["tId"], childColumns = ["partTId"], onDelete = ForeignKey.CASCADE ) ] ) класс данных ArticleEntity( @PrimaryKey(autoGenerate = true) val tId: Long = 0, val partTId: Long = -1, val id: Строка?, имя значения: Строка?, ) : Сериализуемый [2] PartEntity
@Entity( tableName = "части", иностранные ключи = [ Внешний ключ( сущность = DetailsCargo::класс, родительские столбцы = ["tId"], childColumns = ["detailsTId"], onDelete = ForeignKey.CASCADE ) ] ) класс данных PartCargo( @PrimaryKey(autoGenerate = true) val tId: Long = 0, val DetailTId: Long = -1, val id: Строка?, имя значения: Строка?, ) : Сериализуемый класс данных PartEntity( @Встроенный валовая часть: PartCargo, @Relation(parentColumn = "tId",entityColumn = "partTId") val partArticles: List? ) : Сериализуемый [3] DetailsEntity
@Entity(tableName = "подробности") класс данных DetailsCargo( @PrimaryKey(autoGenerate = true) val tId: Long = 0, val id: Строка?, имя вал: Строка? ) : Сериализуемый класс данных DetailsEntity( @Встроенный реквизиты вал: DetailsCargo, @Relation(parentColumn = "tId",entityColumn = "detailsTId") части вал: List? ) : Сериализуемый Это DetailsDAO
@Дао Подробности интерфейсаDAO { @Insert(onConflict = OnConflictStrategy.REPLACE) забавная вставкаPartCargo (родитель: PartCargo): Long @Сделка fun InsertAllParts (parentId: Long, parts: List) { parts.forEach { часть -> val CargoParentId = InsertPartCargo(part.part.copy(detailsTId = ParentId)) part.partArticles?.let { элементы -> val Children = items.map { it.copy(partTId = CargoParentId) } InsertArticleEntities (дети) } } } @Insert(onConflict = OnConflictStrategy.REPLACE) забавная вставкаDetailsCargo(родитель: DetailsCargo): Long @Сделка забавная вставкаDetails (подробности: DetailsEntity) { val ParentId = InsertDetailsCargo(details.details) Details.parts?.let { элементы -> InsertAllParts (parentId, элементы) } } @Сделка @Query("ВЫБРАТЬ * ИЗ подробностей WHERE :id = id") весело getDetails(id: String): DetailsEntity? } Теперь при создании приложения я получаю следующую ошибку:
Невозможно найти столбец дочерней сущности `detailsTId` в PartEntity. [*]Правильно ли построены мои объекты? [*]Если нет, то какое решение? Заранее спасибо
Мобильная версия