Android Room 数据库迁移从表中删除所有嵌入列

问题描述 投票:0回答:1

我试图从某个表中删除“@Embedded”对象

class MigrateFrom28To29 : AutoMigrationSpec

示例:

@Entity
data class A(
   @PrimaryKey var a: String,
   var b: String,
   @Embedded(prefix = "c_") var c: C
)

data class C (
    val a: String,
    val b: String,
    val c: String,
): Serializable

在我的迁移类中添加注释:

@DeleteColumn(tableName = "A", columnName = "c_a")
@DeleteColumn(tableName = "A", columnName = "c_b")
@DeleteColumn(tableName = "A", columnName = "c_c")
class MigrateFrom28To29 : AutoMigrationSpec

当 C 类很复杂并且有很多成员时,有什么简单的方法可以做到这一点(不将每个成员添加到DeleteColumn)?

android kotlin android-room database-migration
1个回答
0
投票

不认为有办法做到这一点,但你可以使用

@DeleteColumn.Entries(
    DeleteColumn(tableName = "A", columnName = "c_a"),
    DeleteColumn(tableName = "A", columnName = "c_b"),
    DeleteColumn(tableName = "A", columnName = "c_c"),
)
© www.soinside.com 2019 - 2024. All rights reserved.