不确定如何将游标转换为此方法的返回类型。

4

我在这里感到相当困惑。也许有人可以为我解惑。我有一个看起来很简单的模式(完整代码如下),但是我却收到了编译器错误信息,说:

错误:不知道如何将游标转换为此方法的返回类型。

问题出在哪里?我使用的是 room_version = "2.1.0-alpha02" 版本。

@Entity(tableName = "big_dog")
class BigDog(val big: Boolean, @PrimaryKey val id:Int=1)

@Dao
interface BigDogDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(dog: BigDog)

    @Query("SELECT * FROM big_dog LIMIT 1")
    fun getBigDog(): LiveData<BigDog>

}

我已经在这里查看过(https://dev59.com/fFYO5IYBdhLWcg3wDNXI?rq=1),并尝试返回`LiveData<List<BigDog>>`,但仍然出现相同的错误。 - salyela
我也遇到了同样的问题。你找到解决方案了吗? - Shubham Anand
2个回答

1
检查部署时的日志,看看是否有除此错误之外的任何通知。如果有,请逐个修复。如果您的房间代码其他地方有问题,也可能会出现此错误。
对于我的具体问题,是我不小心向一个实体添加了重复变量。
public int routeId;
/* other code */
public int routeid; 

这导致构建日志中弹出了此警告。

Room无法创建SQLite连接以验证查询。查询验证将被禁用。错误:[SQLITE_ERROR] SQL错误或缺少数据库(重复的列名:routeId)

我检查并修复了所有问题,因此没有警告,并重新启用了查询验证,我不再收到以下错误:

错误:不知道如何将游标转换为此方法的返回类型。


这是一个有价值的答案。谢谢。 - noob-Sci-Bot

0

请检查您的应用gradle文件。尝试不要在项目中混合使用Pre-AndroidX和AndroidX组件依赖项。
注意依赖项命名空间组。它们的开头应该相似。
在我的例子中是“android.arch.____:X.X.X”

dependencies{
   ...

   def lifecycle_version = "1.1.1"
   def room_version = "1.1.1"

   // Lifecycle components
   implementation "android.arch.lifecycle:extensions:$lifecycle_version"
   annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"

   // Room components
   implementation "android.arch.persistence.room:runtime:$room_version"
   annotationProcessor "android.arch.persistence.room:compiler:$room_version"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接