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

2022-09-01 13:44:07

我不明白,虽然这是获取新插入行的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;
    }
}

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

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

我错过了什么?


答案 1
AlarmEntity...alarms

这转化为多个插入。所以返回类型应该是 a 或 a ,这是有道理的。如果传递两个项目,您将获得两个 ID,每个新插入的行对应一个 ID。List<Long>long[]

如果一次只插入 1 个项目,请删除 ()。断续器varargs...

@Insert
long insert(AlarmEntity alarms);

答案 2

如果有人在2021年12月遇到此问题,我刚刚修复了我的问题,它可能与您的问题相同。

事实上,kotlin 1.6.0 已经正式推出。但是,在 Room 的稳定 2.3.0 版本中,它不包括使用此更新的 kotlin 的依赖项。

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


推荐