Не могу понять, как сохранить это поле в конвертере базы данных - PullRequest
0 голосов
/ 14 февраля 2020

выдает мне это предупреждение [kapt] Запрошена обработка добавочной аннотации, но поддержка отключена, поскольку следующие процессоры не являются инкрементными: androidx.room.RoomProcessor (DYNAMI C). это зависимость

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
//room database
def room_version = "2.2.3"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
testImplementation "androidx.room:room-testing:$room_version"


//lifecycle viewmodel and livedata
def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
// this extensions is fro view model
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'

, и ниже приведен код базы данных комнаты android studio выдайте эту ошибку, даже если у меня есть ошибка конвертера аннотированного типа: Не удается выяснить, как сохранить это поле в базе данных. Вы можете рассмотреть возможность добавления конвертера типов для него. приватный финал java .util.Date lastUpdated = null;

package ps.room.com

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase

// this class is used as a Database
@Database(entities = [Book::class], version = 3) 

@TypeConverters(DateTypeConverter::class) 
abstract class BookRoomDatabase : RoomDatabase(){
    abstract  fun BookDao(): BookDao 

    companion object{
        private var bookRoomInstance:BookRoomDatabase? = null

      private  val MIGRATION_1_2: Migration = object : Migration(1, 2){  
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("ALTER TABLE books " +
                        "ADD COLUMN description  TEXT DEFAULT  'Add Description' " +
                        " NOT NULL")
            }
        }

       private val MIGRATION_2_3 : Migration = object : Migration(2, 3){
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("ALTER TABLE books " +
                        "ADD COLUMN last_updated INTEGER DEFAULT  NULL")
            }
        }


        fun getDatabase(context: Context): BookRoomDatabase?{
                if (bookRoomInstance == null){
                    synchronized(BookRoomDatabase::class.java){
                        if (bookRoomInstance == null){
                            bookRoomInstance = Room.databaseBuilder<BookRoomDatabase>(context.applicationContext,
                                BookRoomDatabase::class.java, "book_database") // here book_database is name of database
                                .addMigrations(MIGRATION_1_2, MIGRATION_2_3) // here we can add multiple migration seperated by commas like migratio1, mig2, mig3
                                .build()
                        }
                    }
                }
            return bookRoomInstance
        }
    }

}

1 Ответ

0 голосов
/ 14 февраля 2020

Это может помочь, если вы используете более новую версию Android Привязка данных Gradle Plugin 3.6+ стала инкрементной и была установлена ​​автоматически с использованием настройки по умолчанию (android .databinding.incremental = true). Похоже, что это может конфликтовать с RoomProcessor. Вы можете попробовать в настройках Gradle отключить инкрементную привязку:

android.databinding.incremental=false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...