Я пытаюсь вставить запись пользователя в базу данных Room, используя Kotlin, и она работает отлично.
И теперь я хочу вернуть вновь вставленный идентификатор записи, чтобы проверить, успешно ли вставлена запись в базу данных Room.
Но когда я применяю тип возврата Long в методе вставки и запускаю код, я получаю следующую ошибку.
ошибка: метод возвращает long, но должен возвращать одно из следующих:
void, long[], java.lang.Long[], java.util.List<java.lang.Long>
. Если
Вы хотите вернуть список идентификаторов строк из запроса, вашей вставки
метод может получить только 1 параметр.
public abstract long insertUser(@org.jetbrains.annotations.NotNull()
Я использую эту библиотеку.
реализация "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())
}
}