Android Room Migration изменяет тип данных столбцов без потери данных - PullRequest
2 голосов
/ 14 марта 2019

У меня есть столбец таблицы с именем tag (TEXT), который изменится на tags (TEXT) сущность изменится с String на Список

Я написал конвертер для столбца, который преобразует список с Gson()

как мне написать миграцию для этого запроса? Я попытался создать временную таблицу, а затем вставить значения - но не смог преобразовать тег в массив. Также тег можно обнулять.

    private val migration_2_3: Migration = object : Migration(2, 3) {
        override fun migrate(database: SupportSQLiteDatabase) {
            database.execSQL("CREATE TABLE IF NOT EXISTS `TempEntity` (`id` TEXT NOT NULL, `tags` TEXT, PRIMARY KEY(`id`))")
            database.execSQL("INSERT INTO `TempEntity` (`id`, `topicIds`,) SELECT `id`, arrayOf('\"[', topicId, ']\"') FROM Entity")
            database.execSQL("DROP TABLE Entity")
            database.execSQL("ALTER TABLE TempEntity RENAME TO Entity")
        }
    }
...