android - java.lang.reflect.InvocationTargetException 在实现 Room Android 时
问题描述
@Dao
interface MyStuffDao {
@Query("SELECT * FROM mystuff WHERE mid = :mid")
fun selectByMid(mid: Long): ArrayList<MyStuff>
@Insert
fun insertMyStuff(mid: Long, name: String)
@Delete
fun deleteMyStuffName(mid: Long, name: String)
@Delete
fun deleteMyStuff(mid: Long)
}
@Entity(tableName = "mystuff")
data class MyStuff (
@PrimaryKey(autoGenerate = true) val seq: Long,
// this name is used in dao as column name
@ColumnInfo(name = "mid") val mid: String,
@ColumnInfo(name = "name") var name: String,
@ColumnInfo(name = "created_at") var createdAt: String
)
@Database(entities = [MyStuff::class], version = 1, exportSchema = false)
abstract class MyDatabase : RoomDatabase() {
abstract fun myStuffDao(): MyStuffDao
companion object {
const val DB_NAME = "MyDatabase.db"
private var INSTANCE: MyDatabase? = null
fun getMyDatabase(context: Context?): MyDatabase? {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(
context!!,
MyDatabase::class.java,
DB_NAME
).build()
}
return INSTANCE
}
fun destroyInstance() {
INSTANCE = null
}
}
}
我收到此错误:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
> java.lang.reflect.InvocationTargetException (no error message)
我已经改变了gradle,但他们都没有工作。
解决方案
我也有同样的例外。就我而言,这是因为我忘记将@Entity添加到我的模型类之一中,例如
@Entity
data class Category(
...
...
推荐阅读
- python - 如何检查输入数字是否唯一[Python]
- java - 在 Java 中找不到 JSONObject、FileReader、JSONArray 的符号
- android - 澄清:如何使用 fastlane 在 cloudbees(react-native 应用程序)中部署我的应用程序(fastlane cloudbees 设置需要步骤)
- ios - 如何从另一个类中获取结构值?
- javascript - 系统在最后的同一网格中显示错误消息(最后一列)
- electron - electron-forge:去掉 Windows 应用文件夹中的版本号
- jquery - Jquery将显示样式更改为基于组合框的div元素的display = block?
- android - 未检测到的 ID 值 Android Kotlin
- extjs - Sencha:“instanceof”的右侧不是对象
- php - 如何解决错误:找不到模块'./vendor/parse'