在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批注
请找到下面的代码,现在它可以正常运行
@Daoabstract 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