我已经使用Kotlin在我的项目中实现了RoomDatabase。 我一直得到以下错误。
error: ProductDatabase_Impl is not abstract and does not override abstract method getProductDao()
in ProductDatabase
public final class ProductDatabase_Impl extends ProductDatabase {
下面是我的Dao接口和ProductDatabase:
@Dao
interface ProductDao {
@Insert
suspend fun insertProduct(product: Product) : Long
@Insert
suspend fun insertAll(products: ArrayList<Product>) : List<Long>
@Update
suspend fun updateProduct(product: Product) : Int
@Query("SELECT * FROM product_table")
fun getAllProducts() : LiveData<List<Product>>
}
@Database(entities = [Product::class], version = 1)
abstract class ProductDatabase : RoomDatabase() {
abstract val productDao: ProductDao
companion object {..//Initialising..}
我在片断中用过dao:
val dao = ProductDatabase.getInstance(requireContext().applicationContext).productDao()
repository = ProductRepository(dao)
val factory = ProductViewModelFactory(repository)
我确实搜索过它,但我发现的主要是使用kapt而不是annotationProcessor,但我从一开始就使用kapt,其他东西都不起作用。 这是我的房间附属品。
implementation "androidx.room:room-runtime:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
implementation "androidx.room:room-ktx:$roomVersion"
kapt "androidx.room:room-ktx:$roomVersion"
androidTestImplementation "androidx.room:room-testing:$roomVersion"
更改:
abstract val productDao: ProductDao
致:
abstract fun productDao: ProductDao