我在这里很困惑。所以也许有人可以给我一些启示。我有一个看似简单的模式(下面有完整的代码),但是却出现编译器错误,提示
错误:不确定如何将游标转换为此方法的返回值 类型。
出什么问题了?我在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>
}
答案 0 :(得分: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"
}
答案 1 :(得分:0)
在部署时检查日志,以查看除此错误外是否还有任何通知。如果有,请修复它们。如果您的房间代码在其他地方有问题,可能会出现此错误。
对于我的特定问题,是我不小心将重复变量添加到我的一个实体中。
public int routeId;
/* other code */
public int routeid;
这导致此警告在构建日志中弹出。
Room无法创建SQLite连接来验证查询。查询验证将被禁用。错误:[SQLITE_ERROR] SQL错误或数据库丢失(列名重复:routeId)
我仔细检查并修复了所有内容,因此没有警告,并且重新启用了查询验证,并且我不再得到
错误:不确定如何将Cursor转换为该方法的返回类型。