Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实现Room Android时的java.lang.reflect.InvocationTargetException_Android_Android Room_Android Reflection - Fatal编程技术网

实现Room Android时的java.lang.reflect.InvocationTargetException

实现Room Android时的java.lang.reflect.InvocationTargetException,android,android-room,android-reflection,Android,Android Room,Android Reflection,我得到这个错误: @Database(entities = [MyStuff::class], version = 1, exportSchema = false) abstract class MyDatabase : RoomDatabase() { abstract fun myStuffDao(): MyStuffDao companion object { const val DB_NAME = "MyDatabase.db" priv

我得到这个错误:

@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
        }
    }
}

我更改了gradle,但它们都不起作用。

您不能使用自定义参数声明
@Insert
@Delete
,它应该采用实体,而不是那样

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)
您可以查看更多详细信息

Insert方法的所有参数必须是用实体或其集合/数组注释的类


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

@Insert
fun insertMyStuff(entity: MyStuff)

@Delete
fun deleteMyStuffName(entity: MyStuff)

@Delete
fun deleteMyStuff(entity: MyStuff)

你确定吗?那么,如果我想删除一行只有名字怎么办?当然,你可以在这里检查。但当删除并传递id时,您可以创建虚拟对象,只要您使用@Query(“从mystuff中删除,其中name:=:name”)就可以了,正如您看到的我的问题一样,我有那个注释。我不是指你的密码。
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)
@Insert
fun insertMyStuff(entity: MyStuff)

@Delete
fun deleteMyStuffName(entity: MyStuff)

@Delete
fun deleteMyStuff(entity: MyStuff)
@Entity
data class Category(
    ...
    ...