我有一个表定义为:
PATH
我想要删除@Table(name = "Rooms")
@Entity
interface IRooms : Persistable {
@get:Column(nullable = false)
@get:Key
var roomJid: String
@get:Column(name = "gameId", nullable = false)
@get:ManyToOne
var game: IGames
@get:Column(name = "creatorJid", nullable = false)
@get:ManyToOne
var creator: IProfiles
@get:Column(nullable = false)
@get:OneToMany(cascade = arrayOf(CascadeAction.DELETE, CascadeAction.SAVE))
val players: MutableList<IPlayers>
@get:JunctionTable
@get:ManyToMany(cascade = arrayOf(CascadeAction.DELETE, CascadeAction.SAVE))
val invitedContacts: MutableList<IInvitedContacts>
@get:Column(nullable = false)
var lastModified: Long
@get:Column(nullable = false)
var isLocked: Boolean
var nextPlayerJid: String?
@get:Column(nullable = false)
var hasGameEnded: Boolean
@get:Column(nullable = false)
var isSoloRoom: Boolean
}
列并添加另一列isSoloRoom
定义为:
matchType
现在,我想编写迁移脚本以删除@get:Convert(MatchType.RequeryConverter::class)
var matchType: MatchType?
列,如果isSoloRoom
值为isSoloRoom
,则将True
设置为 SOLO else { {1}}。
我尝试了什么:
matchType
方法中删除了null
列: isSoloRoom
onUpgrade
列已成功添加,但效果不佳,但db?.execSQL("UPDATE Rooms SET ('matchType') = ('SOLO') WHERE soloRoom = 1")
未删除。
我应该怎么做才能删除matchType
列并添加isSoloRoom
列。我是否应该从Schema中删除它,也可以通过sqlite从isSoloRoom
脚本中删除它(编写整个create table会非常繁忙)或者requery是否提供了一些替代方法?