首页 > 解决方案 > 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,但他们都没有工作。

标签: androidandroid-roomandroid-reflection

解决方案


我也有同样的例外。就我而言,这是因为我忘记将@Entity添加到我的模型类之一中,例如

@Entity
data class Category(
    ...
    ...

推荐阅读