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

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

Войти через центр авторизации
Похожие вопросы