gpt4 book ai didi

android - 房间数据库 onConflict = OnConflictStrategy.REPLACE 不起作用

转载 作者:行者123 更新时间:2023-12-02 14:49:34 27 4
gpt4 key购买 nike

我正在处理 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com