在Room与Kotlin中能否为@PrimaryKey设置自定义名称?
问题解答
我想要实现如下代码的效果,请问这可行吗?
@Entity(tableName = "cached_objects") data class CachedObject( @PrimaryKey(name = "my_object_key") val myObjectKey: String val name: String )
这段代码不可直接运行,存在两个明显问题:
- 语法错误:
myObjectKey属性声明末尾缺少逗号,Kotlin data class的多个属性之间必须用逗号分隔; - 主键使用注意事项:
@PrimaryKey修饰的字符串类型主键未开启自动生成,需要你在插入数据时手动保证myObjectKey的唯一性,这本身是Room允许的用法,但要注意业务逻辑层面的主键重复问题。
修正后的代码如下,完全符合Room实体类规范,可以实现你预期的表结构效果:
@Entity(tableName = "cached_objects") data class CachedObject( @PrimaryKey(name = "my_object_key") val myObjectKey: String, val name: String )
内容的提问来源于stack exchange,提问作者h.and.h
相关产品推荐
相关产品推荐

