@amimamoya

Не работает код с использованием room. В чём проблема?

Недавно узнал о такой замечательной библиотеке, как 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")
}
  • Вопрос задан
  • 818 просмотров
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Для котлина нужно использовать kapt вместо annotationProcessor
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы