当前位置: 首页 > 知识库问答 >
问题:

Room错误:不确定如何处理插入方法的返回类型

柳坚白
2023-03-14

我不明白,我以为这是获取新插入行的id的方法

@Dao
public interface AlarmDao {

    .....

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    long insertAll(AlarmEntity...alarms); //used long instead of void
}

实体

@Entity(tableName = "tb_alarm")
public class AlarmEntity {

    @PrimaryKey(autoGenerate = true)
    private long id;

    ...

    public long getId(){
        return this.id;
    }
}

但是构建失败,我得到的错误是指向我的类,错误是:

错误:不确定如何处理插入方法的返回类型。

我错过了什么?

共有3个答案

尚棋
2023-03-14

使用房间DAOs访问数据:

如果@Inert方法只接收1个参数,它可以返回long,这是插入项的新rowId。如果参数是数组或集合,它应该返回long[]或List。

insertAll()的返回类型更改为long[]或List

苏鸿波
2023-03-14

如果任何人在2021年12月都有这个问题,我只是解决了我的问题,可能和你的一样。

目前,kotlin 1.6.0已经正式推出。然而,随着Room稳定的2.3.0版本的发布,它不包括与这个更新的kotlin一起工作的依赖项。

我所做的是将我的房间更新为2.4.0-rc01,这解决了我的问题!

聂琨
2023-03-14
AlarmEntity...alarms

这将转换为多个插入。所以返回类型应该是列表

如果一次只想插入一项,请删除varargs)。如

@Insert
long insert(AlarmEntity alarms);

 类似资料:
  • 我正在使用kotlin和room库开发一个android应用程序。当我试图获取插入项的id时,我得到了以下错误 不确定如何处理insert方法的返回类型。公共抽象java。lang.Object InsertReceive(@org.jetbrains.annotations.NotNull() 我尝试过其他类似的解决方案,但它不起作用 这是我的密码 收据kt 接收道。kt ReceiptRepo

  • 我正在尝试使用RxJava并返回一个 此界面由我所有的道类扩展: 更新 问题是,当我只有1个insert方法时,它可以工作,但当我有2个或更多方法时(如您所见,例如插入一个

  • 使用我得到了这个错误,我想找出是哪种方法导致的。 我有多个s,总共大约有60个方法,这个错误只是在添加一个方法(复制 我可以发布整个类的s,但是我需要一种方法来知道哪个方法失败了。我尝试了,和,但是这些都没有显示任何有价值的信息。 我添加的方法是一个,带有返回类型,如在留档中建议的那样 UPDATE或DELETE查询可以返回空或int。如果是int,则该值是受此查询影响的行数。 编辑:我想补充一点

  • 我在这里看到了很多问题,但这些答案都没有解决我的问题。这是我的DAO: 我正试图得到一个包含在该类别中的食谱列表。我得到一个编译时错误,它说: C: 。。。\app\build\tmp\kapt3\stubs\debug\com\mitch\rcp\RecipeDAO。java:18:错误:不确定如何将游标转换为此方法的返回类型(void)。 但我的返回类型不是void?我不明白。

  • 如何使用Kotlin、Coroutines、ViewModel和LiveData处理查询方法的返回类型room 建筑失败了,我得到了很多错误,这些错误指向我的道类,错误是 错误1: 不确定如何处理查询方法的返回类型(java.lang.Object)。DELETE查询方法必须返回void或int(已删除的行数)。 错误2: 错误:查询方法参数应该是可以转换为数据库列的类型,或者是包含此类类型的列表

  • 我正在使用房间来建立简单的笔记应用程序。下面是我的note实体类: 我希望它会返回一个注释列表。但是我的应用程序崩溃了,这个错误消息显示“不确定如何将光标转换为该方法的返回类型”。