Ошибка при выдаче комнаты Android: методы удаления должны либо возвращать void, либо возвращать int (количество удаленных строк) - PullRequest
0 голосов
/ 02 января 2019

Я использую Android Room с RxJava

dependencies {
    implementation 'androidx.room:room-rxjava2:2.1.0-alpha02'
}

Мне нужно получить Completable из параметризованных методов удаления, я думал, эта функция добавлена ​​в 2.1.0?напр.

  @Query("DELETE FROM message_table WHERE uid = :id")
  Completable delete(String id);

  @Query("DELETE FROM message_table")
  Completable deleteAll();

Все еще выдает ошибку: Deletion methods must either return void or return int (the number of deleted rows).

1 Ответ

0 голосов
/ 02 января 2019

, поскольку сообщение об ошибке пытается сказать:

с @Query, вы должны изменить возвращаемый тип данных с Completable на int или void.

Completable потребуется подписаться на другой метод, который запускает метод Dao:

Completable
  .fromAction(aMethodWhichCallsDao)
  .subscribeOn(Schedulers.single())
  .subscribe();

или использует аннотацию @Delete, как предложено @Commonsware (в случае, если это работает какрекламируемый).

...