代码之家  ›  专栏  ›  技术社区  ›  vikas singh

Kotlin-使用persistence room:runtime lib从房间数据库返回新插入的ID

  •  2
  • vikas singh  · 技术社区  · 8 年前

    我正在尝试使用Kotlin在房间数据库中插入用户记录,它工作得很好。

    现在,我想返回新插入的记录ID,以检查记录是否已成功插入到房间数据库中。

    但是,当我在insert方法中应用long-return类型并运行代码时,得到了以下错误。

    错误:方法返回long,但它应返回以下值之一: void, long[], java.lang.Long[], java.util.List<java.lang.Long> 。如果 您要从查询返回行ID列表,插入 方法只能接收一个参数。

    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,在这里我要在房间数据库中插入一条记录

    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()) 
            }
        }
    
    1 回复  |  直到 8 年前
        1
  •  5
  •   zsmb13    8 年前

    @Insert
    fun insertUsers(vararg userRegistrationEntities: UserRegistrationEntity): List<Long>
    

    Long

    @Insert
    fun insertUser(userRegistrationEntity: UserRegistrationEntity): Long
    
    推荐文章