在dao房间数据库中创建带有正文的自定义函数

时间:2018-07-21 06:28:01

标签: android dao android-room

我想用这样的自定义函数创建一个DAO对象

@Dao
interface DataAccessObjDao{
    @Insert
    fun insert(someEntity: SomeEntity)

    @Ignore
    fun sampleFun(){
        insert(SumEntity())
    }

}

但是编译器抱怨样本乐趣

类'DataAccessObjDao_Impl'必须声明为抽象或在'DataAccessObjDao

中实现抽象方法'sampleFun()'

2 个答案:

答案 0 :(得分:1)

@Ignore用于属性或实体,不能在方法上使用。
您可以通过扩展界面来做到这一点:

fun DataAccessObjDao.sampleFun(){
    // irrelevant code
}

或通过添加@Transaction

@Transaction
fun sampleFun(){
    firstDelete()
    thenInsert()
}

答案 1 :(得分:0)

正如您所写,Dao也可以是抽象类。您可以在抽象类内部定义带有主体的方法。但是Dao用于查询表,并且对于不同的表具有不同的Dao对象。如果他们只插入,删除,更新和选择查询会更好。我还使用BaseDao来最小化Dao代码。

您应该在LocalDataSource类内调用dao.insert(SumEntity()),该类在this guide中使用存储库。