在 dao room 数据库中创建一个带有 body 的自定义函数
Posted
技术标签:
【中文标题】在 dao room 数据库中创建一个带有 body 的自定义函数【英文标题】:create a custom function with body in dao room database 【发布时间】:2018-12-29 09:49:58 【问题描述】:我想用这样的自定义函数创建一个 DAO 对象
@Dao
interface DataAccessObjDao
@Insert
fun insert(someEntity: SomeEntity)
@Ignore
fun sampleFun()
insert(SumEntity())
但是编译器抱怨样本很有趣
类“DataAccessObjDao_Impl”必须声明为抽象或在“DataAccessObjDao”中实现抽象方法“sampleFun()”
【问题讨论】:
是的,它一定是,实际上它不是我原来的实现 【参考方案1】:@Ignore
用于属性或实体,不能用于方法。
你可以通过扩展你的界面来做到这一点:
fun DataAccessObjDao.sampleFun()
// irrelevant code
或添加@Transaction
@Transaction
fun sampleFun()
firstDelete()
thenInsert()
【讨论】:
【参考方案2】:正如您所写,Dao 也可以是抽象类。您可以在抽象类中定义带有主体的方法。但是 Dao 是用于查询表的,并且对于不同的表有不同的 Dao 对象。如果他们只有插入、删除、更新和选择查询会更好。我也用 BaseDao 来最小化 Dao 代码。
您应该在使用 Repository 的 LocalDataSource 类中调用 dao.insert(SumEntity()),如 this guide。
【讨论】:
以上是关于在 dao room 数据库中创建一个带有 body 的自定义函数的主要内容,如果未能解决你的问题,请参考以下文章