【问题标题】:Springboots allows for duplicate documents to be saved [closed]Springboots允许保存重复的文档[关闭]
【发布时间】:2020-11-25 18:23:42
【问题描述】:

我一直在使用 MongoDB 和 Spring Boot。我创建了一个小型网络应用程序,但似乎遇到了一个错误。在我将 Web 应用程序部署到 EC2 并设置好所有内容后,我会尝试不同的场景。一个是我和我的朋友尝试将相同的对象保存到数据库中。这应该是不可能的,因为在我的代码中我已经限制了它,所以它会出错。但不知何故,如果时间完美,我们都可以保存文档。我们使用我们的方法contains 检查文档是否已经存在,但在这种情况下似乎失败了。

    /**
     * @param id ID of the document we are looking for
     * @return true or false based on if the Doc with given ID exists
     */
    @Override
    public boolean contains(String id) {
        return eventModelRepo.findById(id).isPresent();
    }

任何有关如何解决此问题的建议将不胜感激。

【问题讨论】:

  • 你能分享其余的存储库代码以及服务层吗?
  • 这可能取决于您保存数据的方式。请记住 save 和 insert 是对您的数据库执行的两种不同类型的操作。

标签: java spring mongodb spring-boot


【解决方案1】:

您需要使用@Transactional 注释来防止对数据库的并发写访问

https://stackoverflow.com/a/39829964/2588771

【讨论】:

  • 所以我需要做的就是添加该注释?
  • 您应该将它添加到您的@repository 类中整个方法链的父方法中。因此,无论调用包含什么方法,然后调用该函数来添加文档,都应该具有该注释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
相关资源
最近更新 更多