首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将主键作为房间持久化库的自动增量

如何将主键作为房间持久化库的自动增量
EN

Stack Overflow用户
提问于 2017-05-22 17:44:54
回答 8查看 152.4K关注 0票数 269

我正在创建一个实体(Room Persistence Library)类Food,在这个类中,我想将foodId设置为自动增量。

代码语言:javascript
复制
@Entity
class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double)
{
    @PrimaryKey
    var foodId: Int = 0
    var calories: Double = 0.toDouble()
}

如何将foodId设置为自动增量字段?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2017-05-22 17:51:13

您需要使用autoGenerate属性

您的主键注释应如下所示:

代码语言:javascript
复制
@PrimaryKey(autoGenerate = true)

PrimaryKey的参考。

票数 472
EN

Stack Overflow用户

发布于 2017-10-15 18:01:44

您可以像这样添加@PrimaryKey(autoGenerate = true)

代码语言:javascript
复制
@Entity
data class Food(
        var foodName: String, 
        var foodDesc: String, 
        var protein: Double, 
        var carbs: Double, 
        var fat: Double
){
    @PrimaryKey(autoGenerate = true)
    var foodId: Int = 0 // or foodId: Int? = null
    var calories: Double = 0.toDouble()
}
票数 171
EN

Stack Overflow用户

发布于 2020-08-18 06:07:18

在这么多答案之后,这真是令人难以置信,但我最后做的几乎没有什么不同。我不喜欢主键可以为空,我想让它作为第一个参数,也想在不定义它的情况下插入,而且它也不应该是var。

代码语言:javascript
复制
@Entity(tableName = "employments")
data class Employment(
    @PrimaryKey(autoGenerate = true) val id: Long,
    @ColumnInfo(name = "code") val code: String,
    @ColumnInfo(name = "title") val name: String
){
    constructor(code: String, name: String) : this(0, code, name)
}
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44109700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档