SpringBoot整合Mongo调用deleteById报错未找到Profile类标识属性如何解决
问题原因
该异常是因为Spring Data MongoDB操作要求关联的实体类必须声明标注了@Id注解的主键字段,对应MongoDB文档默认的_id主键字段,你的Profile实体类目前没有配置主键属性,所以调用existsById、deleteById这类依赖主键的方法时就会抛出找不到标识符属性的异常。
你之前可以正常插入数据是因为MongoDB插入文档时会自动生成_id字段,不需要你主动传值,但实体层没有做映射的话,Spring Data就无法识别对应的主键字段。
解决步骤
- 修正
Profile实体类,添加@Id标注的主键字段,同时修正你代码里的字段类型拼写错误(Stirng改为String),修正后代码如下:
import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import lombok.Data; import lombok.Builder; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @Data @Document @Builder @AllArgsConstructor @NoArgsConstructor public class Profile { // 对应MongoDB文档的_id主键字段 @Id private String id; private String birthDate; private String city; private String country; }
- 重启项目即可生效,新增的
id字段不需要你主动赋值,插入数据时MongoDB自动生成的主键会自动映射到该字段,后续按ID查询、删除操作都可以正常执行。 - 之前已经插入的旧数据不需要修改,新增的主键字段会自动映射旧数据的
_id值。
内容的提问来源于stack exchange,提问作者user9347049
相关产品推荐
相关产品推荐

