2

我正在使用mongodb with spring mvcREST API。我有一个控制器,它为事件添加评论。该控制器使用我的事件服务的方法。它们的实现如下。但是在我看来,好像我的 mongodb 连接在没有transaction. 我已经在我1 insert1 update控制器中添加了评论。如果更新事件抛出错误,请求提交插入。为什么它不做回滚?我该如何解决这个问题?

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;
}
4

1 回答 1

1

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)。

于 2014-03-12T23:12:12.627 回答