我正在使用 mongodb 和 spring mvc
作为 REST API。我有一个 Controller ,可以为事件添加评论。该 Controller 使用我的事件服务的方法。它们的实现如下。然而,在我看来,我的 mongodb 连接似乎在没有 transaction
的情况下工作。我有 1 insert
和 1 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/