- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 Room 数据库并尝试插入项目列表(例如,包含作者姓名和我的案例中的引用的引用列表)。
以下是我正在使用的代码:
// view model
BaseApp.daoInstance?.appDao()?.insertQuotes(response!!)
// dao
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertQuotes(listData: MutableList<Quote>)
当我尝试再次插入相同的数据时,它总是作为新数据插入,而不是用当前项目替换。
我对此OnConflictStrategy.REPLACE进行了大量研究,但找不到任何正确的答案。
是否有人面临同样的问题并找到解决方案,或者我做错了什么?
提前谢谢您......!!!
最佳答案
Room,不会检查和比较数据库中是否已有报价。它将执行的操作是查看主键是否已存在于数据库中,如果存在,Room 将用新数据替换所有旧数据。
在您的情况下,您没有指定 ID,因此数据库会为您生成一个唯一的 ID。您应该做的是创建一个查询
,它将在数据库中搜索此报价,如下所示:
@Query("SELECT * from quote_table WHERE author = :author AND quote = :quote")
List<Quote> getQuoteByAuthorAndQuote(string author, string quote);
如果找到,则应返回带有单引号的列表;如果不存在,则应返回空列表。
如果您想覆盖旧的,只需更新 Quote POJO 中的数据并使用 Room 将其插入数据库即可。
关于android - 房间数据库 onConflict = OnConflictStrategy.REPLACE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56231855/
我在 Android Room 中有一个 DAO,插入了 OnConflictStrategy.REPLACE,有一个 boolean 字段 downloaded,如果用户下载了这个对象,它就会变为
我在我的 android 应用程序中使用房间数据库。 在向我添加的用户中插入数据时: // Not working onConflict = OnConflictStrategy.IGNORE/RE
我正在处理 Room 数据库并尝试插入项目列表(例如,包含作者姓名和我的案例中的引用的引用列表)。 以下是我正在使用的代码: // view model BaseApp.daoInstance?.ap
OnConflictStrategy.ABORT 和有什么区别和 OnConflictStrategy.IGNORE在房间数据库中? ABORT : 冲突时回滚事务 IGNORE : 保留现有行 我知
我是一名优秀的程序员,十分优秀!