在Room中创建通用DAO接口时,“参数的类型必须是带有@Entity注释的类”

我正在使用Room架构组件进行持久化。我创建了通用的DAO接口以避免样板代码。 Room

Pro提示

但是我的代码没有编译为“错误:(21,19)错误:参数的类型必须是带有@Entity或其集合/数组的类。” 通用类T。

interface BaseDao<T> {

@Insert(onConflict = OnConflictStrategy.REPLACE)

void insert(T... entity);

@Update

void update(T entity);

@Delete

void delete(T entity);

}

@Dao

public abstract class ReasonDao implements BaseDao<ReasonDao> {

@Query("SELECT * from Reason")

abstract public List<Reason> getReasons();

}

我在这里想念什么吗?它在这里这样工作

回答:

我最初遵循的是Kotlin中使用的方法,但是这给出了Java代码中的错误。两次快速更改为我解决了

  • 将BaseDao更改为Abstract类
  • 在BaseDao中添加了@Dao批注

请找到下面的代码,现在它可以正常运行

@Dao

abstract class BaseDao<T> {

@Insert(onConflict = OnConflictStrategy.REPLACE)

abstract void insert(T entity);

@Update

abstract void update(T entity);

@Delete

abstract void delete(T entity);

}

@Dao

public abstract class ReasonDao extends BaseDao<Reason>{

@Query("SELECT * from Reason")

abstract public List<Reason> getReasons();

}

以上是 在Room中创建通用DAO接口时,“参数的类型必须是带有@Entity注释的类” 的全部内容, 来源链接: utcz.com/qa/411782.html

回到顶部