Kotlin-使用Persistence Room:runtime lib从Room数据库返回新插入的ID

时间:2018-07-06 06:59:35

标签: android kotlin persistence android-room

我正在尝试使用Kotlin在Room数据库中插入用户记录,并且运行良好。

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

但是当我在insert方法中应用Long返回类型并在那时运行代码时,出现以下错误。

  

错误:方法返回的时间很长,但是应该返回以下之一:   "use strict"。如果   您要返回查询中的行ID列表,请插入   方法只能接收1个参数。

void, long[], java.lang.Long[], java.util.List<java.lang.Long>

我正在使用此库。

  

实现“ android.arch.persistence.room:runtime:1.0.0”

public abstract long insertUser(@org.jetbrains.annotations.NotNull()

这是我的插入查询。

kapt "android.arch.persistence.room:compiler:1.0.0"

这是我的addAsyncTask,我在其中将记录插入到Room数据库中

@Insert
fun insertUser(vararg userRegistrationEntity: UserRegistrationEntity):Long;

2 个答案:

答案 0 :(得分:4)

如果要插入多个实体,则只能将它们的ID返回到数组或列表中,例如:

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

如果一次插入一个实体,则可以以Long的形式获取其ID:

@Insert
fun insertUser(userRegistrationEntity: UserRegistrationEntity): Long

答案 1 :(得分:0)

基于文档here

使用@Insert注释注释的方法可以返回:

long for single insert operation
long[] or Long[] or List<Long> for multiple insert operations
void if you don't care about the inserted id(s)