Код: Выделить всё
@Entity(tableName = "owners")
data class OwnerEntity(
@PrimaryKey(autoGenerate = true) val id: Long,
val name: String
)
< /code>
и смиренность: < /p>
@Entity(
tableName = "cars"
foreignKeys = [ForeignKey(
entity = OwnerEntity::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("ownerId"),
onDelete = ForeignKey.RESTRICT
)]
)
data class CarEntity(
@PrimaryKey(autoGenerate = true) val id: Long,
val make: String
val registration: String
val ownerId: Long
)
< /code>
Я создал класс Carowner, как это: < /p>
data class CarOwner(
@Embedded
val car: CarEntity,
@Relation(
parentColumn = "ownerId",
entityColumn = "id"
)
val owner: OwnerEntity
)
< /code>
Но теперь я не могу получить правильное заклинание операций CRUD в моем кардао. Мои сведения об использовании: < /p>
Создать: я могу предположить, что владелец существует (то есть, владелец действительна), когда автомобиль вставлен. /> Обновление: автомобили могут изменить регистрацию
, владельцы или оба. Таким образом, один вызов обновления может
изменить любое или обе эти поля.@Transaction
@Query("SELECT * FROM cars WHERE id = :id")
abstract fun find(id: Long): ListenableFuture
< /code>
кажется хорошим в реализации, созданной комнатой. < /p>
Но я не могу понять, что делать в Cardao. Например, этот метод сохранения ()
Код: Выделить всё
@Transaction
@Insert
abstract fun save(entity: CarOwner): ListenableFuture
< /code>
отказывается компилировать с: < /p>
e: [ksp] C:/Users/FreeBird/CODE/Projects/cartracker/TrackerApp/src/main/kotlin/org/example/cartracker/db/CarDao.kt:56: Type of the parameter must be a class annotated with @Entity or a collection/array of it.
< /code>
что справедливо. Но как мне это сделать? Реализовать ли я save ()
та же ошибка в этом методе удаления: < /p>
Код: Выделить всё
@Transaction
@Delete
abstract fun delete(id: Long)
Подробнее здесь: https://stackoverflow.com/questions/796 ... cification