1 问题形容
在Spring Boot
中应用Mongodb
中的Example
查问数据时查问不到,示例代码如下:
ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("username", ExampleMatcher.GenericPropertyMatchers.exact()).withIgnorePaths("id","password");
2 问题剖析
在Spring Data
中应用Mongodb
时,插入数据会增加一个_class
字段,这个字段是用来映射POJO
的,也就是说,如果一个实体类如下:
@Document(collection = "user")class User{ @Id private String id; private String username; private String password;}
则存进数据库的字段如下:
_id,_class,username,password
而应用ExampleMatcher
,默认状况下会匹配所有字段,因而,如果实体类的包名扭转了,_class
字段就不会匹配,这样就无奈正确地失去查问后果。
3 解决方案
把_class
增加进IgnorePath
即可:
.withIgnorePaths("_class","id","password")
如果不想在插入数据时主动增加_class
字段,能够批改MongoTemplate
或者MappingMongoConverter
,因为此超出本文范畴,仅给出参考链接,戳这里或这里。