android - 无法使用 Room 数据库
问题描述
我想使用Room
数据库,但在构建应用程序时出现此错误:
执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障
和一些像这样的错误:
错误:不确定如何将 Cursor 转换为此方法的返回类型 (java.util.ArrayList<com.example.kotlin.Model.BookmarkModel>)。
我将Room
数据库与这些类一起使用:
书签实体:
@Entity(tableName = "bookmark")
class BookmarkEntity(
@PrimaryKey(autoGenerate = true)
var id: Int,
@ColumnInfo(name = "TITLE")
var title: String,
@ColumnInfo(name = "URL")
var url: String,
@ColumnInfo(name = "IMAGE")
var image: String
)
书签数据库:
@Database(entities = [BookmarkEntity::class], version = 1)
abstract class BookmarkDataBase : RoomDatabase() {
abstract fun bookmark(): BookmarkDAO
companion object {
private var instance: BookmarkDataBase? = null
fun getInstance(context: Context): BookmarkDataBase {
if (instance == null)
instance =
Room.databaseBuilder(context, BookmarkDataBase::class.java, "bookmark")
.allowMainThreadQueries()
.fallbackToDestructiveMigration()
.build()
return instance!!
}
}
}
书签道:
@Dao
interface BookmarkDAO {
@Insert
fun insertData(bookmarkEntity: BookmarkEntity): Boolean
@Query("select * from bookmark")
fun getData(): ArrayList<BookmarkModel>
@Query("DELETE FROM bookmark WHERE id = :id")
fun deleteData(id: Int)
@Delete
fun deleteData(bookmarkEntity: BookmarkEntity)
}
我将此依赖项添加为Room
:
implementation "androidx.room:room-runtime:2.2.5"
kapt "androidx.room:room-compiler:2.2.5"
并添加build.gradle文件apply plugin: 'kotlin-kapt'
的顶部。但是仍然会出现该错误。你能帮助我吗?
解决方案
问题是Room
的查询函数只能返回一个由 注释的类的实例@Entity
。所以BookmarkDAO.getData()
不能返回列表BookmarkModel
。
所以:
@Query("select * from bookmark")
fun getData(): List<BookmarkEntity>
推荐阅读
- javascript - 在 Angular 8 Router 中,当导航到其他父级的路由时,父级路由保持不变
- python - Flask App 上不适当的日期时间数据类型和错误
- c - getpgid 没有用 valgrind 实现
- c# - Azure Storage Table Error when running Azure Function
- dividebyzeroexception - Csharp 编程中的 DivideByZeroExeption
- sql - TypeORM activeRecord style query for "where (a & b) or (c & d)"?
- arm - 为什么stm32f103的elf文件运行良好,二进制不行?
- go - 处理具有一个“返回”值的 goroutine 的惯用方式?
- linux - 按列和通用编号对床文件进行排序
- php - getting error while coverting .html file to codeigniter Found 2 elements with non-unique id