Присоединяется в комнате - вопрос о спецификации класса DAOAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Присоединяется в комнате - вопрос о спецификации класса DAO

Сообщение Anonymous »

У меня есть небольшая проблема в комнате, когда я имею дело с объединением.

Код: Выделить всё

@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 () 
сам, как метод @Query ? Это звучит как плохое использование комнаты для меня. < /P>
та же ошибка в этом методе удаления: < /p>

Код: Выделить всё

@Transaction
@Delete
abstract fun delete(id: Long)
Как я могу указать это сохранение () и delete () в моем классе DAO, чтобы эта комната создавала правильные реализации для них?

Подробнее здесь: https://stackoverflow.com/questions/796 ... cification
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Присоединяется в комнате - вопрос о спецификации класса DAO
    Anonymous » » в форуме Android
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Android Room: класс Dao должен быть помечен @Dao
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Android Room: класс Dao должен быть помечен @Dao
    Anonymous » » в форуме Android
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Android Room: класс Dao должен быть помечен @Dao
    Anonymous » » в форуме Android
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Ни один из ваших источников спецификации не содержит спецификации, удовлетворяющих зависимости: Firebase (~> 6.33.0), Fi
    Anonymous » » в форуме IOS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»