vik*_*ngh 3 android persistence kotlin android-room
我正在尝试使用Kotlin在Room数据库中插入用户记录,并且运行良好。
现在,我想返回新插入的记录ID,以检查是否在Room数据库中成功插入了一条记录。
但是,当我在insert方法中应用Long返回类型并在那时运行代码时,出现以下错误。
错误:方法返回的时间很长,但是应该返回以下值之一:
void, long[], java.lang.Long[], java.util.List<java.lang.Long>
。如果要从查询返回行ID列表,则插入方法只能接收1个参数。Run Code Online (Sandbox Code Playgroud)public abstract long insertUser(@org.jetbrains.annotations.NotNull()
我正在使用这个库。
实现“ android.arch.persistence.room:运行时:1.0.0”
Run Code Online (Sandbox Code Playgroud)kapt "android.arch.persistence.room:compiler:1.0.0"
这是我的插入查询。
@Insert
fun insertUser(vararg userRegistrationEntity: UserRegistrationEntity):Long;
Run Code Online (Sandbox Code Playgroud)
这是我的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())
}
}
Run Code Online (Sandbox Code Playgroud)
如果要插入多个实体,则只能将它们的ID返回到数组或列表中,例如,如下所示:
@Insert
fun insertUsers(vararg userRegistrationEntities: UserRegistrationEntity): List<Long>
Run Code Online (Sandbox Code Playgroud)
如果您一次插入一个实体,则可以将其ID重新获取为Long
:
@Insert
fun insertUser(userRegistrationEntity: UserRegistrationEntity): Long
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2017 次 |
最近记录: |