Error:Not sure how to convert a Cursor to this method's return type
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
使用Room
我得到了这个错误,我想找出是哪种方法导致的。
我有多个DAO
s,总共大约有60个方法,这个错误只是在添加一个方法(复制
我可以发布整个类的DAO
s,但是我需要一种方法来知道哪个方法失败了。我尝试了Run with--stackTrace
,Run with--info
和--debug选项
,但是这些都没有显示任何有价值的信息。
我添加的方法是一个@Query
UPDATE
,带有Int
返回类型,如在留档中建议的那样
UPDATE或DELETE查询可以返回空或int。如果是int,则该值是受此查询影响的行数。
编辑:我想补充一点,我试图删除这个方法,使DAO回到工作状态,但它仍然给我这个错误。
EDIT2:添加渐变控制台输出,因为无法在注释中读取:
error: Not sure how to convert a Cursor to this method's return type
error: Not sure how to convert a Cursor to this method's return type
2 errors
:app:compileDebugJavaWithJavac FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 22s
对于登陆这里的任何人,使用协程Flow作为返回类型,如果不小心使函数挂起,就会得到这个错误,由于是返回流,所以没有必要挂起。
所以代替这个:
@Query("SELECT * FROM myTable WHERE id = :id")
suspend fun findById(id: Long): Flow<MyDataType>
使用此选项(不带挂起修改器):
@Query("SELECT * FROM myTable WHERE id = :id")
fun findById(id: Long): Flow<MyDataType>
我花了一整天的时间在这个问题上。解决方案非常简单。我以前用过类似的东西
@Query("SELECT * FROM myTable")
fun getAll(): MutableLiveData<ArrayList<myData>>
现在当我把ArrayList改为List时
@Query("SELECT * FROM myTable")
fun getAll(): LiveData<List<myData>>
根据答案
希望这能帮助一些人几个小时。
最近我遇到了同样的问题,但我在Dao
函数中使用了Coroutines
,例如:
@Query("SELECT * FROM Dummy")
suspend fun get(): LiveData<List<Dummy>>
无法编译,但在删除suspend
后,一切正常。返回LiveData
时不需要它suspend
和LiveData
似乎无法协同工作(截至目前)。
我在这里看到了很多问题,但这些答案都没有解决我的问题。这是我的DAO: 我正试图得到一个包含在该类别中的食谱列表。我得到一个编译时错误,它说: C: 。。。\app\build\tmp\kapt3\stubs\debug\com\mitch\rcp\RecipeDAO。java:18:错误:不确定如何将游标转换为此方法的返回类型(void)。 但我的返回类型不是void?我不明白。
我正在尝试将此对象保存在Room数据库中,我读到了Typconverters用于将复杂对象转换为一个可以存储在数据库中的文件。我收到这个错误:错误:不确定如何将光标转换为此方法的返回类型(androidx.lifecycle.LiveData 我的问题类别: 我的dao类: 我的数据库类: 我的转换器类别:
我正在使用房间来建立简单的笔记应用程序。下面是我的note实体类: 我希望它会返回一个注释列表。但是我的应用程序崩溃了,这个错误消息显示“不确定如何将光标转换为该方法的返回类型”。
我不明白,我以为这是获取新插入行的id的方法。 刀 实体 但是构建失败,我得到的错误是指向我的类,错误是: 错误:不确定如何处理插入方法的返回类型。 我错过了什么?
我正在使用kotlin和room库开发一个android应用程序。当我试图获取插入项的id时,我得到了以下错误 不确定如何处理insert方法的返回类型。公共抽象java。lang.Object InsertReceive(@org.jetbrains.annotations.NotNull() 我尝试过其他类似的解决方案,但它不起作用 这是我的密码 收据kt 接收道。kt ReceiptRepo
我想说得具体一点。我有一个名为Result的类和一个名为Result的派生类 这些类在方法中用作返回类型。为此,我创建了这个helper类: 正如您所看到的,上面的代码对于成功有两种返回类型,一种是如果您不想返回任何东西,另一种是如果您想返回一些东西,但是失败的结果永远不会返回什么东西。这是不必要的,只是一个错误消息。这使我想到以下问题:当我想创建一个可以使用返回类型返回Success,而不使用返