java - MongoDB 的 Spring 数据

标签 java spring mongodb spring-mvc spring-mongo

我正在使用 mongodb 和 spring mvc 作为 REST API。我有一个 Controller ,可以为事件添加评论。该 Controller 使用我的事件服务的方法。它们的实现如下。然而,在我看来,我的 mongodb 连接似乎在没有 transaction 的情况下工作。我有 1 insert1 update 在我的 Controller 中添加评论。如果事件更新抛出错误,请求提交插入。为什么不回滚?我该如何解决这个问题?

public Comments addComment(Comments comment) throws Exception{
    comment.setCommentDate(SowUtil.getDateTimeDB());
    comment.setCommenter(personService.findPersonById("531cc90e3c37b20bef47dfc7"));
    mongoTemplate.insert(comment);
    Events adv = findEventById(comment.getEventId());
    adv.addComment(comment);
    eventService.save(adv);
    return comment;
}

最佳答案

MongoDB 没有与 RDBMS 相同的事务概念。根据您的示例,您似乎正在使用两个文档。

MongoDB 有一篇关于涉及多个文档的两阶段提交模式的文章( http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/ ).也许,这可以帮助您实现回滚?

我相信 Spring 也有对 MongoDB 事务支持的概念(http://docs.spring.io/spring-integration/reference/html/mongodb.html)。

关于java - MongoDB 的 Spring 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364831/

相关文章:

java - 使用 RPM 打包 jar 时,指定 "noarch"是个好主意吗?

java - Richfaces 4 - 无法解析绝对uri

java - Spring boot YAML 配置未读取所有值

Eclipse(spring 工具套件)在服务器启动时自动关闭(包括 Eclipse 日志文件)

javascript - mongodb 按字符串长度分组

java - 如何在 Java 中将字符串转换为 double 型

Java 模式匹配器 : create new or reset?

java - Spring @Transactional 注解问题

mongodb - 由于数据库连接,Lamda 上的初始请求缓慢

java - 如何使用 Java 驱动程序访问嵌套在 MongoDB 数组中的对象