Java Springboots允许保存重复的文档
我一直在使用MongoDB和Spring Boot。我创建了一个小的webapp,我似乎遇到了一个bug。在我将web应用部署到EC2并完成所有设置后,我会尝试不同的场景。一种是我和我的朋友尝试将同一对象保存到数据库中。这应该是不可能的,因为在我的代码中我限制了它,所以它会得到一个错误。但不知何故,如果时间安排得当,我们都可以保存文档。我们使用我们的方法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
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类中整个方法链的父方法中。因此,无论调用哪个方法,然后调用函数来添加文档,都应该具有该注释。