如何使用房间自动迁移删除/重命名多列

clm*_*mno 11 android android-room

注意:房间自动迁移处于测试阶段 - 2.4.0-beta02

我删除了两个不同表中的两列。我尝试重复@DeleteColumn注释,就像这样

    @DeleteColumn(tableName = "User", columnName = "phone")
    @DeleteColumn(tableName = "Product", columnName = "description")
    @DeleteTable(tableName = "Category")
    class TestRoomAutoMigration: AutoMigrationSpec {   }
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误

Repeatable annotations with non-SOURCE retention are not yet supported
Run Code Online (Sandbox Code Playgroud)

问题

  1. 如果我无法通过自动迁移重复注释,如何删除/重命名多列

clm*_*mno 17

Kotlin 尚未添加对可重复注释的完全支持,其语法与 Java 相同。所以我们必须使用容器注释,如下所示:

@DeleteColumn.Entries(
    DeleteColumn(tableName = "User", columnName = "phone"),
    DeleteColumn(tableName = "Product", columnName = "description"),
)
@DeleteTable(tableName = "Category")
class TestRoomAutoMigration: AutoMigrationSpec {   }
Run Code Online (Sandbox Code Playgroud)

这也适用于重命名列。

这个问题首先在 Google 问题跟踪器上得到了回答 -链接