Android Room引发错误:删除方法必须返回void或返回int(已删除的行数)

And*_*Lam 5 android rx-java2 android-room

我正在将Android Room与RxJava一起使用

dependencies {
    implementation 'androidx.room:room-rxjava2:2.1.0-alpha02'
}
Run Code Online (Sandbox Code Playgroud)

我需要从参数化删除方法中获取Completable,我认为此功能从2.1.0开始添加?例如

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

  @Query("DELETE FROM message_table")
  Completable deleteAll();
Run Code Online (Sandbox Code Playgroud)

仍然会引发错误: Deletion methods must either return void or return int (the number of deleted rows).

Mar*_*ler 6

由于错误消息试图告诉:

使用@Query,您必须将返回的数据类型从更改Completableintvoid

Completable需要订阅的另一种方法,它运行的方法Dao

Completable
  .fromAction(aMethodWhichCallsDao)
  .subscribeOn(Schedulers.single())
  .subscribe();
Run Code Online (Sandbox Code Playgroud)

或使用@Delete@Commonsware建议的注释(以防广告宣传)。


sun*_*er3 5

我不知道你是否还需要这个,但今天刚进入同样的事情,发现你需要使用所有这 3 个库来创建 DAO 方法以返回 Completable:

implementation 'androidx.room:room-runtime:2.2.1'
kapt 'androidx.room:room-compiler:2.2.1'
implementation 'androidx.room:room-rxjava2:2.2.1'
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到您。