我有这样的实体对象:
@Entity(tableName = "woks", foreignKeys = arrayOf(ForeignKey(
entity = Order::class,
parentColumns = arrayOf("entryid"),
childColumns = arrayOf("order_id"),
onDelete = ForeignKey.CASCADE
)))
data class Wok(
val order_id: String
) {
@ColumnInfo(name = "id")
@PrimaryKey(autoGenerate = true)
var id: Long = 0
}
并以这种方式定义了我的DAO文件中的插入:
@Insert(onConflict = OnConflictStrategy.IGNORE)
abstract fun insertWok(wok: Wok): Long
正如您所看到的那样,冲突被忽略,所以当我试图再次插入同一个对象时,它将覆盖该对象并继续增加id。
所以我想要实现的是多次插入同一个对象
答案 0 :(得分:1)
要多次插入对象,需要更改主键。 房间是基于它来知道它是否是一个新的对象。
答案 1 :(得分:0)
我已经尝试了多种可能的组合,这些组合可以与您提供的信息一起使用,但我没有像您所说的那样附带任何内容。
您能否请您分享更多信息,例如您的施工方,如何创建工作对象, 实际发生了什么(前后)
这可能会发生, 如果在传递给insertWork方法时您的工作对象ID为0 如果您放置两个ID均为0的相同对象,则由于autogenrate = true,room将自动为其生成id,并且由于room将创建唯一的id,因此这些对象将被视为不同的对象。