首页 >  MongDB代码 >  Mongodb 在update时 org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property

mongoTemplate在update时 org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property

时间:2024-01-09

如题,当使用findAndModify更新数据的莫名其妙出现如题错误。

例子:

  Query q =new Query();

  q.addCriteria(Criteria.where("_id").is(JSON.opt("id")));

  Update u =new Update();

  u.set("class_name", JSON.opt("class_name"));

  u.set("class_anno",JSON.opt("class_anno"));

  u.set("package_name", JSON.optString("package_name"));

  u.set("inject_interface_class", JSON.optJSONArray("injectClass"));

  mongoTemplate.findAndModify(q, u, JSONObject.class,"mongo_table_name");

  //mongoTemplate.updateFirst(q, u, "mongo_table_name");

一、区别

mongo的修改操作,注意使用区别

1、updateMulti:找到匹配条件的文档时进行更新,如果没有找到则会插入一条新的,如果找到多条则会全部更新。

2、updateFirst:和update类似如果找到多条则只会更新第一条。

3、findAndModify:找到匹配条件的文档时进行更新,并返回更新前的文档。

二、问题解答

本问题是因为触碰到关键词了。class_name 在mongoTemplate.findAndModify内部会被转为class.name,导致反序列化失败,具体原因可以debug查看。 解决方案1、使用updateFirst;2、避免使用class_name关键词