【发布时间】:2019-06-18 19:54:03
【问题描述】:
updateFirst Spring Mongo 模板的方法并不总是按预期更新 mongo Db 集合。
(更新请求是由前端 ui 中的保存按钮触发的,我们看到在按下保存按钮并完成请求后会出现一条 toast 消息,说明表已成功保存)
当几个更新请求一个接一个按顺序触发并且更新之间没有间隙时,在几个请求之后我可以看到数据不再更新但日志中没有错误。
以下是更新数据库的方法。
@Override
public void updateTable(Source source, Table table) {
log.debug("updating existing table " + table.getTableId() + " on source " + source.getSourceId());
source.setStatus(SourceStatus.InProcess);
Query q = query(where("_id").is(source.getId()).and("deleted").is(false).and("tables._id").is(table.getId()));
Update u = update("tables.$", table);
u.set("lastModifiedAt", source.getLastModifiedAt()).set("lastModifiedBy",
source.getLastModifiedBy()).set("errorInObject", source.isErrorInObject()).set(
"errorInChildObject", source.isErrorInChildObject()).set("errors", source.getErrors()).set(
"failedFields", source.getFailedFields()).set("status",source.getStatus());
template.updateFirst(q, u, Source.class);
}
我已经记录了使用属性文件参数在 Spring Boot 应用程序上向 Mongo Db 触发的查询,并且始终更新正在触发的查询具有正确的值,但是
更新何时生效 -- 在触发更新查询之前,有一条日志消息显示“正在将对象保存到数据库”。
当更新不起作用时 -- 在更新查询被触发后,有一条日志消息显示“正在将对象保存到数据库”,我认为它写入数据库是之前的更新而不是当前的更新更新。
MongoDB 版本 -- 2.6.7
Spring Mongo 模板驱动版本 -- 2.13.3
Spring Boot 版本 -- v1.3.2.RELEASE
如果需要,可以提供更多信息。
【问题讨论】:
标签: spring mongodb spring-boot mongotemplate