当前位置: 首页 > 知识库问答 >
问题:

使用Kotlin coroutines时Room dao类出错

景鸿才
2023-03-14
    kotlin {
    experimental {
        coroutines 'enable'
    }
}
dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.21" ...}

所以我为dao类中的所有方法添加了suspend关键字,如下所示:

dao类

@Query("select * from myevent")
suspend fun all(): List<MyEvent>

@Delete
suspend fun deleteEvent(event: MyEvent)
...

然后得到这些错误

@org.jetbrains.annotations.Nullable()
@android.arch.persistence.room.Delete()
public abstract java.lang.Object deleteAllEvents(@org.jetbrains.annotations.NotNull() // error indicates at this line
java.util.List<com.robyn.myapp.data.MyEvent> events, @org.jetbrains.annotations.NotNull()
kotlin.coroutines.experimental.Continuation<? super kotlin.Unit> p1); // error indicates at this line
...

我该怎么解决这个?

共有1个答案

公西马鲁
2023-03-14

不能对DAO使用suspend方法。在编译时和编译器中处理的Suspend函数更改该函数的签名(不同的返回类型,状态机回调的一个附加参数),使其非阻塞。

Room等待特定的方法签名生成代码。因此,除非Room不直接支持协程,否则不能对DAO使用suspend函数。

目前,您有这样的变通方法:

    null
 类似资料:
  • 我在运行时使用Java辅助编辑类,(添加一个新的构造函数) 不幸的是,这会抛出一个, 线程"main"javaid中的异常。Cannot CompileExcema: byjava.lang.IllegalAccessError: classjavax.swing.JFrame无法访问其超接口javax.swing.TransferHandler$HasGetTransferHandler at

  • 我有一行代码: 它接受一个变量,其类型应为float。当我使用type()测试变量类型时,它返回: 但是我一直收到一个错误,上面写着“/: str和int不支持的操作数类型”。

  • 我在使用WordPress、WooCommerce、Divi以及一个名为Divi Body Commerce的插件时遇到了som问题 当我创建一个变量产品并转到我的购物车时,出现了一个php错误。这不是我的代码,但我需要修复它。 以下是代码的开头: 当我调用变量乘积上的is_type函数时,会发生错误。 我不习惯WordPress和WooCommerce,所以如果有人能给我一个答案,那就太好了。

  • 问题内容: 我的代码- 错误- > 警告:mysql_real_escape_string()[function.mysql-real-escape-string]:在C:\ xampp \ htdocs \ shizin \ admin \中拒绝访问用户’ODBC’@’localhost’(使用密码:NO)第48行的newArticle.php 警告:mysql_real_escape_stri

  • 为什么我在使用: mysqli_report(MYSQLI_REPORT_ALL);?致命错误:未捕获异常“mysqli_sql_exception”,在d:\xampp\htdocs\cms\includes\class\db.class.php:31堆栈跟踪:#0 d:\xampp\htdocs\cms\includes\class\db.class.php(31):mysqli->查询(“S