Создать общий первичный ключ в комнате Android - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь создать общий объект первичного ключа в комнате Android. Я использую котлин. Я посмотрел, как создать универсальный для него. К сожалению, я не нашел лучших практических решений, которые продемонстрировали бы пример универсального вашего первичного ключа в комнате дао. Я не знаю, зачем улучшать мой код, я был бы признателен за помощь.

interface RxLocalDb<T : Model, K> : LocalDb {

    // Basic functions, no need to override

    @Insert(onConflict = REPLACE)
    fun save(vararg response: T)

    @Update
    fun update(vararg response: T)

    @Delete
    fun remove(vararg response: T)


    // Override this method to comply each class needs

    fun get(id: K): Single<T>

    fun getList(): Single<List<T>>

    fun remove(id: K)

    fun removeAll()

    fun isItemCached(id: K, strId: String? = ""): Single<Boolean>

    fun isItemCacheExpired(id: K, strId: String? = ""): Single<Boolean>

    fun isCached(): Single<Boolean>

    fun isCacheExpired(): Single<Boolean>
}```

@ Dao abstract class AboutDao: RxLocalDb {

@Query("SELECT * FROM about WHERE id = :intId")
abstract override fun get(id: Long): Single<AboutItem>

@Query("SELECT * FROM about")
abstract override fun getList(): Single<List<AboutItem>>

@Query("DELETE FROM about WHERE id = :id")
abstract override fun remove(id: Long)

@Query("DELETE FROM about")
abstract override fun removeAll()

override fun isCached(): Single<Boolean> {
    return getList().subscribeOn(Schedulers.io()).map { !it.isEmpty() }
}

override fun isCacheExpired(): Single<Boolean> {
    return Single.just(false)
}

override fun isItemCached(id: Long, strId: String?): Single<Boolean> {
    return Single.just(false)
}

override fun isItemCacheExpired(id: Long, strId: String?): Single<Boolean> {
    return Single.just(true)
}

}


and this is the error message when i am trying to build project 

"e: error: An abstract DAO method must be annotated with one and only one of the following annotations: Insert,Delete,Query,Update,RawQuery - get(K) in com.nbs.nucleo.data.RxLocalDb
"

...