Запрос на обновление с возвращением типа RxJava2 выдает ошибку: Не уверен, как преобразовать курсор в тип возврата этого метода - PullRequest
1 голос
/ 12 апреля 2020

Вот фрагмент кода, который вызывает проблему преобразования курсора:

@Query("UPDATE profile SET profilePicture=:newProfilePicture WHERE firstName = :first AND lastName = :last")
fun updateProfilePicture(
    newProfilePicture: ByteArray,
    first: String,
    last: String
) : Completable

Что я пробовал:

  • Удалите lastName из запроса и верните Single<String>.
  • Возврат Single<List<String>>
  • Возврат Single<Void>

Gradle

def room_version = "2.2.5"
implementation "androidx.room:room-rxjava2:$room_version"

Но ничего из них сработало.

1 Ответ

2 голосов
/ 12 апреля 2020

@ Методы запроса: Room поддерживает возвращаемые значения типа Publisher, Flowable и Observable.

Как указано в do c, поддерживаемый тип для Методы запроса: Publisher, Flowable и Observable. Поэтому первое, что нужно исправить, - это перейти с Completable на один из поддерживаемых типов.

После внесения исправления у меня все еще есть проблема в сгенерированном коде. Я обнаружил ошибка компиляции , потому что ожидаемый тип был Integer. Итак, исправление, которое я сделал, я изменил с поддерживаемого RxJava2 типа на Int и обернул его позже, чтобы он стал Single.

IMO, это всего лишь обходной путь.

Проблема возникает от того, что я использовал:

kapt 'androidx.arch.persistence.room:compiler:1.1.1'

нсат

kapt "androidx.room:room-compiler:$room_version"
...