我正在尝试使用 Kotlin 在 Room 数据库中插入用户记录,并且它完美地运作。
现在,我想返回新插入的记录 ID ,以检查是否成功将记录插入 Room 数据库。
但是,当我在插入方法中应用 Long 返回类型并运行代码时,我会收到以下错误。
现在,我想返回新插入的记录 ID ,以检查是否成功将记录插入 Room 数据库。
但是,当我在插入方法中应用 Long 返回类型并运行代码时,我会收到以下错误。
error: Method returns long but it should return one of the following:
void, long[], java.lang.Long[], java.util.List<java.lang.Long>
. If you want to return the list of row ids from the query, your insertion method can receive only 1 parameter.public abstract long insertUser(@org.jetbrains.annotations.NotNull()
我正在使用这个库。
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
这是我的插入查询。
@Insert
fun insertUser(vararg userRegistrationEntity: UserRegistrationEntity):Long;
这里是我的addAsyncTask,在其中向Room数据库插入记录。
private fun userRegistration(userRegistrationEntity: UserRegistrationEntity) {
addAsyncTask(appDatabase!!).execute(userRegistrationEntity)
}
private class addAsyncTask constructor(private val appDatabase: AppDatabase) : AsyncTask<UserRegistrationEntity, Void, Long>() {
override fun doInBackground(vararg params: UserRegistrationEntity): Long? {
// val a = appDatabase.userRegistrationDao().addUser(params[0]);
val newReturnId = appDatabase.userRegistrationDao().insertUser(params[0]);
return newReturnId
}
override fun onPostExecute(result: Long?) {
super.onPostExecute(result)
Log.d("value", result.toString())
}
}
Long
,则需要删除vararg
并仅插入一个元素,就像我上面展示的那样。 - zsmb13