You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Room数据库能否通过对象参数执行更新操作?

你的Room数据库更新写法不可行

首先,你写的这种直接在@Query里用:model.videoStatus和:model.id的方式,Room是不支持的——Room的参数绑定不允许直接引用对象的嵌套属性,编译时会直接报错。

另外要注意,你这个函数实际执行的是UPDATE更新操作,但函数名起成了delete,这会造成语义混淆,建议改成updateVideoStatus这类贴合功能的名字。

给你两种可行的写法:

写法1:拆分对象属性为单独参数

把需要用到的字段从对象里拆出来作为函数参数,这是最直接的方式:

@Query("UPDATE video_info_table SET videoStatus = :videoStatus WHERE id = :id")
fun updateVideoStatus(id: Int, videoStatus: Int)

调用的时候直接传入model.id和model.videoStatus即可。

写法2:使用Room的@Update注解(适用于更新整个实体)

如果你的FileModelClass是Room实体类,且id字段标记了@PrimaryKey主键注解,可以直接用@Update注解更新整个对象:

@Update
fun updateVideo(model: FileModelClass)

不过这种方式会更新对象里的所有非主键字段,如果只想更新videoStatus这一个字段,还是写法1更高效。

内容的提问来源于stack exchange,提问作者Affan Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:40:25