Недавно узнал о такой замечательной библиотеке, как room. Решил использовать в своём новом проекте и у меня ничего не работает, выдаёт ошибку. Уже долго ищу 10 отличий своего кода от кода других людей и не могу понять в чём причина. Вот код:
Интерфейс ProductDao:
@Dao
interface ProductDao {
@Insert
fun addProduct(product: Product)
@Update
fun updateProduct()
@Delete
fun deleteProduct(name: String)
@Query("SELECT * FROM Vegetables")
fun getProduct()
}
Клас данных Vegetables:
@Entity
data class Vegetables(val name: String,
val about: String,
var price: String
)
И, наконец, ProductDatabase:
@Database(entities = arrayOf(Vegetables::class), version = 1, exportSchema = false)
abstract class ProductDatabase : RoomDatabase() {
abstract fun productDao(): ProductDao
companion object {
@Volatile
private var INSTANCE: ProductDatabase? = null
fun getDatabase(context: Context): ProductDatabase {
if (INSTANCE != null) {
return INSTANCE!!
}
synchronized(this) {
INSTANCE = Room.databaseBuilder(context, ProductDatabase::class.java, "database")
.fallbackToDestructiveMigration().build() //Вот тут возникает ошибка
return INSTANCE!!
}
}
}
}
В файле активности просто делаю так:
var db = ProductDatabase.getDatabase(this)
И получаю такую ошибку: Caused by: java.lang.RuntimeException: cannot find implementation for com.example.shop.ProductDatabase. ProductDatabase_Impl does not exist
В build.gradle (Module)есть имплементации:
dependencies {
implementation("[androidx.room](http://androidx.room):room-runtime:2.3.0")
annotationProcessor("[androidx.room](http://androidx.room):room-compiler:2.3.0")
}