我有一个 android 数据库,其中有一个类似的实体
换句话说,我想在分配实体后使用自动生成的 id 将其包含在文件名中。所以我想做这样的电话
data.insert("cow")
并让它自动分配一个 id 和一个格式为“myfolder/”+[id]+“.mp3”的文件名
如果我天真地尝试在实体主方法中执行此操作,使用 this.filename = "myfolder/"+this.id+".mp3"
然后,由于 id 尚未设置,this.id
返回其空值 (0)。
可以这样做吗?
最佳答案
您可以将 id 的类型更改为 String,每次插入新项目时都会生成一个新的 UUID 并将该 UUID 设置为 id 和文件名,如下所示:
suspend fun insertItem(string: String) {
val uuid = UUID.randomUUID().toString()
val item = Item(
id = uuid,
string = string,
fileName = "myFolder/$uuid.mp3"
)
dataDao.insert(item)
}
如果您想在外部使用它来生成文件或其他内容,您甚至可以将该 uuid 作为参数传递给 insertItem 函数:
suspend fun insertItem(string: String, uuid: String) {
val item = Item(
id = uuid,
string = string,
fileName = "myFolder/$uuid.mp3"
)
dataDao.insert(item)
}
关于Android房间数据库: get autogenerated id at time of assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73544166/