Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Springboots允许保存重复的文档_Java_Spring_Mongodb_Spring Boot - Fatal编程技术网

Java Springboots允许保存重复的文档

Java Springboots允许保存重复的文档,java,spring,mongodb,spring-boot,Java,Spring,Mongodb,Spring Boot,我一直在使用MongoDB和Spring Boot。我创建了一个小的webapp,我似乎遇到了一个bug。在我将web应用部署到EC2并完成所有设置后,我会尝试不同的场景。一种是我和我的朋友尝试将同一对象保存到数据库中。这应该是不可能的,因为在我的代码中我限制了它,所以它会得到一个错误。但不知何故,如果时间安排得当,我们都可以保存文档。我们使用我们的方法contains,检查文档是否已经存在,但在这种情况下它似乎失败了 /** * @param id ID of the doc

我一直在使用MongoDB和Spring Boot。我创建了一个小的webapp,我似乎遇到了一个bug。在我将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();
    }

请提供有关如何解决此问题的任何建议。

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


您是否可以共享存储库代码的其余部分以及服务层?这可能取决于您保存数据的方式。记住
save
insert
是对数据库执行的两种不同类型的操作。因此,我需要做的就是添加该注释?您应该将其添加到@repository类中整个方法链的父方法中。因此,无论调用哪个方法,然后调用函数来添加文档,都应该具有该注释。