在使用MongotTemplate 进行remove操作时,由于不了解源码,报了以下的错误:
org.springframework.data.mapping.model.MappingException: No id property found for object of type class.......
这个错误是由于在对应的
实体类中没有定义mongo数据库自动产生的
_id属性。
在实体类中添加
private String _id;
属性
MongoTemplate中涉及remove的方法:
mongoTemplate.remove();
mongoTemplate.findAllAndRemove();
mongoTemplate.findAndRemove();
mongoTemplate.remove();
mongoTemplate.findAllAndRemove();
mongoTemplate.findAndRemove();
其中的
mongoTemplate.remove();传入不同类型参数,对于
实体类中有无
_id属性的要求不一样。比如
mongoTemplate.remove(object, collection)方法,如果对应object实体类中
没有_id属性就会报错:org.springframework.data.mapping.model.MappingException: No id property found for object of type。但是
mongoTemplate.remove(query, entityClass, collectionName)就运行正常;
mongoTemplate.findAllAndRemove();对应的实体类的就需要有_id属性;
mongoTemplate.findAndRemove();对应的实体类的不是必须有_id属性。
原因在MongoTemplate代码中有的方法调用其中的extractIdPropertyAndValue(Object object),有的没有。
因此,为了方便,建议在实体类添加_id属性。