gpt4 book ai didi

java - Spring MongoRepository 正在更新或更新插入而不是插入

转载 作者:IT老高 更新时间:2023-10-28 13:05:28 36 4
gpt4 key购买 nike

我正在使用:

org.springframework.data.mongodb.repository.MongoRepository

我从一个空的数据库开始,例如用 _id = 1234 创建一个对象,并将其他一些字符串字段设置为 hello 例如,然后执行:

repository.save(object);

一切正常,它将文档保存在 MondoDB 中。

我创建了一个新对象,设置相同的 _id = 1234 但将另一个字符串字段设置为 world 然后另一个保存:

repository.save(newObject);

结果:保存有效,但更新了原始对象。

预期结果:这应该会因 DuplicateKeyException 而失败,因为 _id 是唯一的,并且每次保存时我都使用 2 个单独的对象。

Spring 的缺陷还是我做错了什么???

最佳答案

Save,根据定义,应该以 upsert 样式更新对象,如果存在则更新,如果不存在则插入。阅读 MongoDb website 上的 save 操作文档

mongodb 中的 insert 操作具有您所期望的行为,但从 MongoRepository 文档看来,插入被委托(delegate)保存,因此不会有任何区别。但是您可以尝试一下,看看它是否适合您。否则,您可以在获取之前检查对象是否存在,因为它是索引查找,它会很快。

编辑:检查您的存储库版本,插入是在 version 1.7 中引入的.

关于java - Spring MongoRepository 正在更新或更新插入而不是插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29032981/

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