房间批量插入是否可以使用冲突策略IGNORE返回插入值的List <T>?

时间:2019-07-09 11:52:50

标签: android android-room

Android Room批量0可以返回@Insert个插入数据中的List<Long>

使用“冲突策略” IGNORE时,如果我的@Entity具有一个RowId主键来使大容量插入语句返回包含插入的String值的String的话,可能吗?

当我尝试此代码时

List<String>

我收到此构建错误消息:-

 @Insert(onConflict = OnConflictStrategy.IGNORE)
 fun insertIgnore(data: ArrayList<MyDO>): List<String>

1 个答案:

答案 0 :(得分:1)

否,它期望返回的不是一个插入对象的long数组(插入行的rowid)。

如果插入成功,则该值为1或更大。

您可以通过索引将它们与传递的数组相关联,从而确定相应对象的已插入或未插入的值。

例如(java而不是Kotlin):-

使用

@Insert(onConflict = OnConflictStrategy.IGNORE)
long[] addDrinks(DrinkList... drinkLists);

您可以使用:-

    long[] result = mDrinkListDao.addDrinks(drinksToAdd);
    for (int i=0; i < result.length; i++) {
        if (result[i] > 0) {
            Log.d("INSERTRESULT",drinksToAdd[i].getList() + "was inserted.");
        } else {
            Log.d("INSERTRESULT", drinksToAdd[i].getList() + "was not inserted");
        }
    }