【发布时间】:2018-06-19 01:33:49
【问题描述】:
我正在尝试在基本接口中定义常见的CRUD 方法,如下所示:
interface BaseDao<in I> {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun create(obj: I)
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun createAll(objects: List<I>)
@Delete
fun delete(obj: I)
}
Room 的以下ProductDao 接口继承自基本接口:
@Dao
interface ProductDao : BaseDao<Product> {
// Specific methods
}
当我编译fun createAll(objects: List<I>) 的定义时会产生以下错误:
参数的类型必须是带有@Entity注解的类或其集合/数组。
【问题讨论】:
-
您的 Product 表是否使用实体注释进行了注释?
-
就是盒子上写的——
I需要标注@Entity -
基类中定义的所有其他方法都有效。只有
createAll()方法不起作用。 -
不,“I”不需要注解,但如果您确实将 BaseDao 设为带有@Dao 注解的抽象类,它将起作用
标签: android kotlin android-room