在搜索时,我只遇到一些人在询问如何避免使用room db插入重复行。但我的应用程序有一个功能,用户可以点击一个复制按钮,列表项目将再次插入到数据库中。如果我的表没有在其中一个字段上设置主键,我本可以简单地做到这一点。While I found this solution for SQLite,我不知道如何在Db房间中实现这一点。因为,在编写带有自定义查询的insert查询时,首先将无法实现使用空间的目的。
发布于 2020-05-06 03:54:18
假设你有某种实体
@Entity(tableName = "foo_table")
data class Foo (
@PrimaryKey(autoGenerate = true) var id: Int,
// or without autogeneration
// @PrimaryKey var id: Int = 0,
var bar:String
)
还有一些带有insert的Dao:
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(foo: Foo)
然后,要复制现有值(copiedValue: Foo),需要以某种方式管理主键:
copiedValue.id = 0 yourDao.insert(copiedValue)
copiedValue.id = ... // some code to set new unique id yourDao.insert(copiedValue)
https://stackoverflow.com/questions/61631108
复制