Допустим, у вас есть сущность
@Entity(tableName = "foo_table")
data class Foo (
@PrimaryKey(autoGenerate = true) var id: Int,
// or without autogeneration
// @PrimaryKey var id: Int = 0,
var bar:String
)
, и у вас есть Dao со вставкой:
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(foo: Foo)
Затем, чтобы скопировать существующее значение (copiedValue: Foo), вам нужно способ управления первичным ключом:
Сценарий 1 . Ваш первичный ключ создается автоматически, вы должны установить его значение по умолчанию, чтобы получить новый автоматически сгенерированный:
copiedValue.id = 0
yourDao.insert(copiedValue)
Сценарий 2 . Ваш первичный ключ не генерируется автоматически, вам нужно установить новый первичный ключ вручную:
copiedValue.id = ... // some code to set new unique id
yourDao.insert(copiedValue)