Android Room迁移在不丢失数据的情况下更改列数据类型

Android Room迁移在不丢失数据的情况下更改列数据类型,android,kotlin,database-migration,android-room,Android,Kotlin,Database Migration,Android Room,我有一个名为tag(TEXT)的表列,它将更改为tags(TEXT) 实体将从String更改为List 我已经为列编写了一个转换器,它使用Gson()转换列表 如何为此查询编写迁移? 我曾尝试创建一个临时表,然后插入值,但无法将标记转换为数组。 此外,标记可以为空 private val migration_2_3: Migration = object : Migration(2, 3) { override fun migrate(database: Support

我有一个名为
tag
(TEXT)的表列,它将更改为
tags
(TEXT) 实体将从
String
更改为List

我已经为列编写了一个转换器,它使用
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")
        }
    }