Room DB自动生成主键。

3

我有一个实体

@Entity
data class SegmentEntity(
@PrimaryKey(autoGenerate = true)
val id: Long,
var rideRelatedId: Long?,
var name: String?,
var speed: String?

我希望PrimaryKey可以自动生成,但是当我创建这个实体时,我需要将它添加到构造函数中:

SegmentEntity(0,3,"Dan","90")

如何在不添加构造函数的情况下自动生成id

3个回答

4
您可以将您的数据类更改为以下内容,并将您的ID放在构造函数之外:
    @Entity
data class SegmentEntity(

    var rideRelatedId: Long?,
    var name: String?,
    var speed: String?
) {
    @PrimaryKey(autoGenerate = true)
    val id: Long? = null;
}

或者可以将默认值设置为 null,使您的 ID 看起来像这样:

@Entity
data class SegmentEntity(
    @PrimaryKey(autoGenerate = true)
    val id: Long? = null,
    var rideRelatedId: Long?,
    var name: String?,
    var speed: String?
)  

在这种情况下,您必须调用您的类:
SegmentEntity(name = "nameValue",rideRelatedId = 1 ,speed ="speedValue")

0

我认为这是目前最佳实践:

@Entity
data class SegmentEntity(
    var rideRelatedId: Long?,
    var name: String?,
    var speed: String?
) {
    @PrimaryKey(autoGenerate = true)
    var id: Int? = null
}

0

你的模型应该长这样:

@Entity
data class SegmentEntity(
@PrimaryKey(autoGenerate = true)
val id: Long = 0L,
var rideRelatedId: Long?,
var name: String?,
var speed: String?

然后在将数据插入数据库后,您可以使用增加的ID执行SegmentEntity(3,"Dan","90")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接