• 解决Spring中使用Example无法查询到Mongodb中的数据问题


    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,由于此超出本文范围,仅给出参考链接,戳这里这里

  • 相关阅读:
    Docker的使用
    Django常见问题
    Linux系统使用
    Nginx
    Redis
    MySQL基础、主从复制、优化
    Python常见的问题
    Python基础知识
    Vue的使用
    python监控tomcat日记文件
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/14120890.html
Copyright © 2020-2023  润新知