房间:使用@Transaction 时收到错误

Room: Receiving error when using @Transaction

我的 DAO class 中有一个用 @Transaction 注释的方法,它导致了以下错误:

A DAO method can be annotated with only one of the following:Insert,Delete,Query,Update

这是我的 class:

@Dao interface Dao {

    @Insert(onConflict = REPLACE) fun insertList(chacaras: List<String>)

    @Query("SELECT * FROM chacara WHERE cityId = :cityId")
    fun getListOfCity(cityId: String): LiveData<List<String>>

    @Delete fun deleteList(chacaraList: List<String>)

    @Transaction
    fun updateList(list: List<String>){
        deleteList(list)
        insertList(list)
    }

}

当我删除用@Transaction 注释的方法时,它可以正常编译。 有办法解决这个问题吗?

根据 transaction documentation

Marks a method in an abstract Dao class as a transaction method.

将您的 class 更改为:

@Dao abstract class Dao {

    @Insert(onConflict = REPLACE) abstract fun insertList(chacaras: List<String>)

    @Query("SELECT * FROM chacara WHERE cityId = :cityId")
    abstract fun getListOfCity(cityId: String): LiveData<List<String>>

    @Delete abstract fun deleteList(chacaraList: List<String>)

    @Transaction
    open fun updateList(list: List<String>){
        deleteList(list)
        insertList(list)
    }

}