加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring mongorepository save抛出重复键异常

发布时间:2020-12-15 02:14:40 所属栏目:Java 来源:网络整理
导读:我正在使用 java和 Spring.作为测试,我通过id查询对象,然后尝试保存同一个对象而不更新任何东西.当我这样做时,我得到一个重复的密钥异常.根据我读过的内容,如果_id为null,则MongoRepository.save()应该执行插入,否则应执行更新.显然,我应该得到更新. 一点代
我正在使用 java和 Spring.作为测试,我通过id查询对象,然后尝试保存同一个对象而不更新任何东西.当我这样做时,我得到一个重复的密钥异常.根据我读过的内容,如果_id为null,则MongoRepository.save()应该执行插入,否则应执行更新.显然,我应该得到更新.

一点代码:

// Succeeds
Datatype sut = mongoRepository.findOne("569eac0dd4c623dc65508679");  

// Fails with duplicate key.
mongoRepository.save(sut);

为什么?重复上面的其他类的对象,他们工作.我怎么能麻烦拍这个呢?我不知道如何分解并解决问题.

谢谢

错误:

27906 [http-bio-8080-exec-3] 2016-05-02 13:00:26,304 DEBUG org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver -

Resolving exception from handler 
[
  public gov.nist.healthcare.tools.hl7.v2.igamt.lite.web.DatatypeSaveResponse 
gov.nist.healthcare.tools.hl7.v2.igamt.lite.web.controller.DatatypeController.save(
  gov.nist.healthcare.tools.hl7.v2.igamt.lite.domain.Datatype) 
throws gov.nist.healthcare.tools.hl7.v2.igamt.lite.web.exception.DatatypeSaveException
]:
org.springframework.dao.DuplicateKeyException: {
   "serverUsed" : "127.0.0.1:27017","ok" : 1,"n" : 0,"err" : "E11000 duplicate key error index: igl.datatype.$_id_ dup key: { : ObjectId('569eac0dd4c623dc65508679') }","code" : 11000};
nested exception is com.mongodb.MongoException$DuplicateKey: {
  "serverUsed" : "127.0.0.1:27017","code" : 11000}

……重复

我刚刚发现了一个.如上所示保存时,spring会尝试插入,即使填充了_id也是如此.

保存其他对象(未显示但类似)时,弹簧执行,更新,并再次填充是_id.

为什么不同?文档说弹簧应该在填充_id时更新,并在不填充时插入.

还有什么可以导致这个吗?我的对象中有什么东西?也许我的读取转换器?

更新:
我刚见过这个团队.经过仔细审查,我们确定我们不再需要读取转换器.问题通过另一种方式解决.

解决方法

在数据库端,您可能已创建唯一索引.请查看“ https://docs.mongodb.com/manual/core/index-unique/”了解更多信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读