DAOクラスに@Transactionアノテーションが付けられたメソッドがあり、次のエラーが発生しています。
DAOメソッドには、挿入、削除、クエリ、更新のいずれか1つだけで注釈を付けることができます。
これが私のクラスです:
@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アノテーションが付けられたメソッドを削除すると、正常にコンパイルされます。これを修正する方法はありますか?
トランザクションドキュメント によると
abstract Daoクラスのメソッドをトランザクションメソッドとしてマークします。
クラスを次のように変更します。
@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)
}
}